Tcp ApacheCamelNetty套接字

Tcp ApacheCamelNetty套接字,tcp,apache-camel,netty,Tcp,Apache Camel,Netty,我想在客户端模式下使用apache camel netty连接。而且,该客户端未处于同步模式。我提供了以下配置来实现这一点,但appache创建了两个到服务器的连接,一个用于接收消息,另一个用于回复消息。如何在此模式下使用netty连接器 from("netty4:tcp://localhost:7000?sync=false&allowDefaultCodec=false&encoder=#stringEncoder&decoder=#stringDecoder&

我想在客户端模式下使用apache camel netty连接。而且,该客户端未处于同步模式。我提供了以下配置来实现这一点,但appache创建了两个到服务器的连接,一个用于接收消息,另一个用于回复消息。如何在此模式下使用netty连接器

from("netty4:tcp://localhost:7000?sync=false&allowDefaultCodec=false&encoder=#stringEncoder&decoder=#stringDecoder&clientMode=true&reconnect=true&reconnectInterval=1000")
            .process(new Processor() {
                public void process(Exchange exchange) throws Exception {
                    exchange.getOut().setBody("Hello " + exchange.getIn().getBody());
                }
            })
            .to("netty4:tcp://localhost:7000?sync=false&allowDefaultCodec=false&encoder=#stringEncoder&decoder=#stringDecoder&clientMode=true");
在Hercules中,我看到了两个连接,用于处理这个请求

11:00:51 AM:  127.0.0.1 Client connected
11:00:51 AM:  127.0.0.1 Client connected

这就是你想要的,对吗? “在接收到来自服务器的请求后。我希望将其推送到MQ中,并等待其他MQ处理响应。因此,当数据包在MQ中处理并可用时,我希望使用相同的连接将响应传输到套接字”

所以第一件事可能是在一些要求上达成一致。如果您需要发回响应,即客户端正在等待有关其发送的请求的回复,那么它应该是同步通信,而不是异步的

所以你可以简单地写下:

from("netty4:tcp://localhost:7000?sync=true&allowDefaultCodec=false&encoder=#stringEncoder&decoder=#stringDecoder&clientMode=true&reconnect=true&reconnectInterval=1000")
            .process(new Processor() {
                public void process(Exchange exchange) throws Exception {
                    exchange.getOut().setBody("Hello " + exchange.getIn().getBody());
                }
            })
            .to("ACTIVE_MQ");
当然,在活动mq部分中,您需要设置回复和超时,以便如果您没有及时收到响应,它将超时,并用一些好的错误消息通知客户机

将发生的情况是,接收到消息并将其发送到活动mq队列,其中包含相应的回复属性。如果收到消息,响应将通过同一连接发送回客户端

我建议您阅读Camel中的JMS请求/回复,因为它将帮助您设置活动mq部件。

您正在接受端口7000上的连接,并在端口7000上发送到同一主机。为什么?因为我必须使用同一端口来请求和回复事务。很抱歉,这有点混乱。你到底想达到什么目的?从外观上看,您在端口7000接收,然后再次发送到端口7000,这意味着您的“发件人”将被触发,并发送到您的“收件人”,从而再次发送到您的“发件人”。这真的是你想要的吗?让我详细解释一下。我需要一个连接到服务器的客户端。但是服务器也可以在连接的套接字上向我发送消息。然后我处理消息并在同一个套接字上回复。好的,但这不是你在那里做的。你告诉服务器自己打电话。谢谢你的回复,我会在早上测试这个东西。你也可以看看克劳斯·伊布森的答案和代码。