2012-07-17 65 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