ZengCode.Com (The Thai Php Framework)  


Home   Download   Manual   About us    

Facebook   


MAIN MENU
เขียนโปรแกรมบน iPhone ด้วย MonoTouch
News
Php Tips
Ubuntu
Spring+Strut+Hibernate
Android Programming
Design Pattern By PHP
C# Design Pattern
Linux Quick Tips
C# Tips & Technique
C# using Linq น่าใช้จริงๆ
Java & JavaScript Tips
MAVEN
Database & SQL
ZengCode Framework Guide
Mac OSx
Zeng Code Code
Programming
IPhone (Tips and Trick)

Download เอกสารที่น่าสนใจ

     การใช้ Future Framework ร่วมกัน Apache Camel เพื่อรอรับ Exchange จาก Endpoint สุดท้าย  (2011-09-06)

บางครั้งเราต้องการทำงานกับ Camel มีการส่ง Message ไปยัง Endpoint ต่างๆ ตาม Route ที่เราสร้างขึ้น
และต้องการรอรับ Message จาก Enpoint สุดท้ายจาก Route เพื่อติดตามการทำงานของเราว่าสำเร็จลุล่วงหรือไม่
โดยใช้วิธีการส่งแบบ Asyncronize ดูได้จากตัวอย่างข้างล่างครับ ง่ายจริงๆ ผมรัก Camel ที่สุดในโลก

package com.zencode.camel;


import com.abctech.transition.webapp.camel.CamelBeanHelper;
import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.impl.DefaultExchange;

import java.util.concurrent.Future;

public class TestFuture {
    public static void main(String[] args) throws Exception {
        CamelContext context = new DefaultCamelContext();
        context.addRoutes(new RouteBuilder() {

            public void configure() {
                from("direct:start").bean(TestFutureBean.class).bean(TestFutureBean2.class).log("Finished.........................");
            }
        });

        context.start();

        ProducerTemplate producerTemplate = context.createProducerTemplate();
        Exchange exchange = new DefaultExchange(context);
        exchange.getIn().setHeader("MyName", "pea");
        exchange.getIn().setBody("Hello Pea");
        CamelBeanHelper.dumpCamelHeaders(exchange);

        Future<Exchange> future = producerTemplate.asyncSend("direct:start", exchange);

        Exchange exchange2 = future.get();

        CamelBeanHelper.dumpCamelHeaders(exchange2);
        System.out.println(">>>>>>> "+ exchange2.getIn().getBody().toString() + "   " + exchange2.getIn().getHeader("myHeader").toString() + " " + exchange2.getIn().getHeader("myHeader2").toString());
        Thread.sleep(3000);
        context.stop();
    }
}

 

 Bean Enpoint

public class TestFutureBean {

    public void handleMessage(Exchange received) {
        received.getIn().setHeader("myHeader", "111");
        String body = received.getIn().getBody().toString() + ", 111";
        received.getIn().setBody(body);
    }
}
====================================================================== public class TestFutureBean2 {
public void handleMessage(Exchange received) {
received.getIn().setHeader("myHeader2", "222");
String body = received.getIn().getBody().toString() + ", 222";
received.getIn().setBody(body);
}
}

ผลลัพธ์

>>>>>>> Hello Pea, 111, 222   111 222


 


Comment
Name
Comment
Security CodeCAPTCHA Image

web hit counter

This page took 0.092767 seconds to load.