Samples - 6.3

Talend ESB Mediation Developer Guide

EnrichVersion
6.3
EnrichProdName
Talend Data Fabric
Talend Data Services Platform
Talend ESB
Talend MDM Platform
Talend Open Studio for ESB
Talend Real-Time Big Data Platform
task
Design and Development
EnrichPlatform
Talend ESB

Camel Xml route

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:camel="http://camel.apache.org/schema/spring"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
        http://camel.apache.org/schema/spring
        http://camel.apache.org/schema/spring/camel-spring.xsd">
 
    <!-- Replace by desired values -->
    <bean id="apnsServiceFactory" 
    class="org.apache.camel.component.apns.factory.ApnsServiceFactory">
 
        <!-- Optional configuration of feedback host and port -->
        <!-- <property name="feedbackHost" value="localhost" /> -->
        <!-- <property name="feedbackPort" value="7843" /> -->
 
        <!-- Optional configuration of gateway host and port -->
        <!-- <property name="gatewayHost" value="localhost" /> -->
        <!-- <property name="gatewayPort" value="7654" /> -->
 
        <!-- Declaration of certificate used -->
                <!-- from Camel 2.11 onwards you can use prefix: classpath:, 
                file: to refer to load the certificate from classpath or file. 
                Default it classpath -->
        <property name="certificatePath" value="certificate.p12" />
        <property name="certificatePassword" value="MyCertPassword" />
 
        <!-- Optional connection strategy - By Default: No need to configure -->
        <!-- Possible options: NON_BLOCKING, QUEUE, POOL or Nothing -->
        <!-- <property name="connectionStrategy" value="POOL" /> -->
        <!-- Optional pool size -->
        <!-- <property name="poolSize" value="15" /> -->
 
        <!-- Optional connection strategy - By Default: No need to configure -->
        <!-- Possible options: EVERY_HALF_HOUR, EVERY_NOTIFICATION or Nothing 
        (Corresponds to NEVER javapns option) -->
        <!-- <property name="reconnectionPolicy" value="EVERY_HALF_HOUR" /> -->
    </bean>
 
    <bean id="apnsService" factory-bean="apnsServiceFactory" 
    factory-method="getApnsService" />
 
    <!-- Replace this declaration by wanted configuration -->
    <bean id="apns" class="org.apache.camel.component.apns.ApnsComponent">
        <property name="apnsService" ref="apnsService" />
    </bean>
 
    <camelContext id="camel-apns-test" 
    xmlns="http://camel.apache.org/schema/spring">
            <route id="apns-test">
                    <from 
                    uri="apns:consumer?initialDelay=10&amp;delay=3600&amp;
                    timeUnit=SECONDS" />
                    <to 
                    uri="log:org.apache.camel.component.apns?showAll=true&amp;
                    multiline=true" />
                    <to uri="mock:result" />
            </route>
    </camelContext>
 
</beans>

Camel Java route

Create camel context and declare apns component programmatically:

protected CamelContext createCamelContext() throws Exception {
    CamelContext camelContext = super.createCamelContext();
 
    ApnsServiceFactory apnsServiceFactory = new ApnsServiceFactory();
    apnsServiceFactory.setCertificatePath("classpath:/certificate.p12");
    apnsServiceFactory.setCertificatePassword("MyCertPassword");
 
    ApnsService apnsService = apnsServiceFactory.getApnsService(camelContext);
 
    ApnsComponent apnsComponent = new ApnsComponent(apnsService);
    camelContext.addComponent("apns", apnsComponent);
 
    return camelContext;
}  

ApnsProducer - iOS target device dynamically configured via header: "CamelApnsTokens"

protected RouteBuilder createRouteBuilder() throws Exception {
    return new RouteBuilder() {
        public void configure() throws Exception {
            from("direct:test")
                .setHeader(ApnsConstants.HEADER_TOKENS, constant(IOS_DEVICE_TOKEN))
                .to("apns:notify");
            }
    }
}    

ApnsProducer - iOS target device statically configured via uri:

protected RouteBuilder createRouteBuilder() throws Exception {
    return new RouteBuilder() {
        public void configure() throws Exception {
            from("direct:test").
            to("apns:notify?tokens=" + IOS_DEVICE_TOKEN);
        }
    };
}     

ApnsConsumer:

from("apns:consumer?initialDelay=10&delay=3600&timeUnit=SECONDS")
    .to("log:com.apache.camel.component.apns?showAll=true&multiline=true")
    .to("mock:result");