使用Apache Camel Mina组件实现请求 - 回复协议

时间:2012-07-17 19:55:26

标签: apache-camel apache-mina

我需要通过TCP实现基于XML-RPC的服务的使用者。建立与服务器的连接后,需要

  1. 客户端发送身份验证凭据
  2. 客户端发送事件订阅请求,最后
  3. 客户端将切换到“接收”模式,消息将以异步方式发送
  4. 当客户不再有兴趣接收更多活动时,客户应该“放松”第1-3步。
  5. 所以,我想使用Apache Camel实现客户端,具有明显的Mina组件入口端点(“mina:tcp:// host :_ port_?textline = true& decoderMaxLineLength = 10240与同步=真“)。我的问题是,我将如何实施上述步骤1,2和4?在我的RouteBuilder中的处理器被调用之前,我将如何执行这些“握手”步骤?这对Camel来说是否可能,或者我必须编写一个直接的Mina客户端来处理这个问题。是否有更好的选择来处理这种类型的集成场景?

    谢谢。

    -Santi

2 个答案:

答案 0 :(得分:1)

这是一个非常好的tutorial on implementing a session handshaking protocol Netty,与Mina非常相似。您可以使用Camel's Netty Component实现此功能,或者在教程上绘制以与Mina构建相同的内容。

答案 1 :(得分: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

的回复