2013-04-28 97 views
0

我正在嘗試使用Camel,Spring和ActiveMQ來實現request-reply pattern。 我需要做的是逐行讀取CSV文件。 然後,對於每一行:基於線的值從CSV 如何實現請求應答模式

    1. 構建請求將請求發送給隊列
    2. 其他組件需要拿起消息,處理請求,併發送該響應另一個消息隊列(生產者已知,所以生產者可以選擇響應)。

    我得到了下面的代碼工作。 現在讓我們說在處理器中創建響應。

    我的問題是:

    1. 我怎樣才能將響應發送回來?
    2. 如何消費迴應?

    public class MyRouteBuilder extends RouteBuilder { 
    
        public static void main(String[] args) throws Exception { 
         new Main().run(args); 
        } 
    
        public void configure() { 
         from("file:/Users/aviad/ws/integ/src/data?fileName=lines.txt&noop=true&idempotent=true") 
         .split() 
         .tokenize("\\n") 
         .inOut("activemq:req"); 
    
         from("activemq:req") 
         .process(new Processor() { 
          public void process(Exchange exchange) throws Exception { 
           System.out.println(exchange.getIn().getBody(String.class)); 
           System.out.println("jmscorrelationid=" + exchange.getIn().getHeader("jmscorrelationid")); 
           System.out.println("jmsdestination=" + exchange.getIn().getHeader("jmsdestination")); 
          } 
         }); 
        } 
    } 
    
  • +0

    [使用ActiveMQ,Camel和Spring的實現請求 - 回覆模式]的可能的重複(http://stackoverflow.com/questions/16243433/implement-request-reply-pattern-using-activemq-camel-and-spring) – 2013-04-28 10:12:48

    +0

    不是重複。更具體一些。 – aviad 2013-04-28 10:30:36

    回答

    2

    駱駝發送自動回一個響應,如果有一個JMSReplyTo對傳入JMS消息設置。因此,在第二條路由中,當消息到達路由末尾時,JMS消費者將使用給定的JMSCorrelationID將「正如其當前所在」消息作爲回覆消息發送回JMSReplyTo目的地。

    您可以在JMS端點上設置多個選項來禁用自動發回應答。或者指定一個指定的回覆隊列等。請參閱JMS頁面的所有選項:http://camel.apache.org/jms

    當您從第一條路線使用inOut時,Camel將通過JMS執行請求回覆。並且默認情況下它使用臨時隊列。但是你也可以告訴Camel使用命名隊列(我們稱之爲固定隊列)。請參閱JMS文檔:http://camel.apache.org/jms

    並注意JMS頁面頂部的提示:http://camel.apache.org/jms。它會將您引向頁面上有關請求/回覆詳細信息的部分。所以請閱讀。

    +0

    謝謝!讀完所有你提到的文檔後,我仍然不明白我需要在第一個根上添加什麼,以便能夠在響應到達時運行一些代碼。任何提示? – aviad 2013-04-29 10:58:20

    +0

    只需在inOut之後添加更多路線,例如.inOut(「activemq:req」)。process(...)... – 2013-04-29 11:36:00

    +0

    瞭解它.cheers mate!順便說一句:好書:) – aviad 2013-04-29 13:20:43