2012-07-17 37 views
0

我需要通過TCP實現基於XML-RPC的服務的使用者。在建立與服務器的連接,它要求使用Apache Camel Mina組件實現請求 - 回覆協議

  1. 認證證書由客戶端
  2. 事件訂閱請求的客戶端發送來發送,最後
  3. 的客戶端切換成「接收「模式,其中消息將異步發送
  4. 當客戶不再有興趣接收更多事件時,客戶應該」放鬆「步驟1-3。

所以,我想用Apache的駱駝來實現客戶端,與米娜組件的一個明顯的進入端點(「米娜:TCP:// 主機:_port_一個TextLine =真& decoderMaxLineLength = 10240 & sync = true「)。我的問題是,我將如何去執行上面的步驟1,2和4?在我的RouteBuilder中的處理器獲取調用之前,我將如何執行這些「握手」步驟?這對駱駝來說甚至是可能的,或者我將不得不直接寫一個Mina客戶端來處理這個問題。處理這種類型的集成方案是否有更好的選擇?

謝謝。

-Santi

回答

1

這是一個非常好的tutorial on implementing a session handshaking protocolNetty,這是相當類似的米娜。你可以用Camel's Netty Component來實現這個,或者在教程上畫一些與Mina一樣的東西。

+0

謝謝你,尼古拉斯答覆。這確實是一個很好的設計,但它比我需要的要多得多,因爲我只是實現了消費者方面(即客戶端)。另外,如果可能的話,我對駱駝實現最感興趣。我已經很好地執行計劃B;即;一個基於Mina的客戶。 – Santi 2012-07-18 16:45:49

1

這可能已經太晚了,但其他人可能需要答案。關鍵點是你需要使用一個處理器。像這樣

from("mina:tcp:////host:_port_?textline=true&decoderMaxLineLength=10240&sync=true") 
.process(new Processor() { 
    public void process(Exchange exchange) throws Exception { 
    String inboundMessage = exchange.getIn().getBody(String.class); 
    String outboundMessage = "echo:"+inboundMessage; 
    exchange.getOut().setBody(outboundMessage); 
    } 
}).to(""mock:result""); 

的outboundMessage將形成終點mina:tcp:////host:_port_?textline=true&decoderMaxLineLength=10240&sync=true