【问题标题】:Apache Camel Netty SocketApache Camel Netty 套接字
【发布时间】:2016-02-26 15:55:58
【问题描述】:

我想在客户端模式下使用 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 Utitly 中,我看到了用于此请求处理的两个连接

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

【问题讨论】:

  • 嗯,您正在接受端口 7000 上的连接并发送到端口 7000 上的同一主机..为什么?
  • 因为我必须使用相同的端口来请求和回复事务。
  • 抱歉,这有点混乱。你到底想要达到什么目的?从外观上看,您在端口 7000 上接收,然后再次发布到端口 7000,这意味着您的“发件人”将被触发并发布到您的“收件人”,该收件人再次发送到您的“发件人”。这真的是你想要的吗?
  • 让我详细解释一下。我需要一个连接到服务器的客户端。但是服务器也可以在该连接的套接字上向我发送消息。然后我正在处理消息并在同一个套接字上回复。
  • 好的,但这不是你在那里做的。您是在告诉服务器调用自己。

标签: tcp apache-camel netty


【解决方案1】:

所以这就是你想要的吧? “从服务器收到请求后。我想将其推送到 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 部分。 http://camel.apache.org/jms.html

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-11-01
  • 1970-01-01
  • 2017-04-23
  • 2018-04-19
  • 2021-03-10
  • 2014-05-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多