Camel-netty4:如何在发送下一个请求之前等待响应

Posted

技术标签:

【中文标题】Camel-netty4:如何在发送下一个请求之前等待响应【英文标题】:Camel-netty4: how to wait response before send next request 【发布时间】:2018-05-17 09:21:13 【问题描述】:

我已经创建了接受来自多个生产者的请求并通过使用带有请求-响应的 netty4 发送到远程服务器的路由。但是,当骆驼向远程服务器发送请求并等待响应时,会收到下一个传入请求并希望发送到远程服务器但由于骆驼无法接收响应而出现 IOException。

那么,如何设置 Camel-Netty4 发送请求并等待响应再发送下一个。

路由配置: 来自("direct:DirectProcessOut?block=true") .to("netty4:tcp://192.168.1.2:8000?sync=true&synchronous=true&reuseChannel=true")

【问题讨论】:

【参考方案1】:

实际上,我在尝试根据数据库表中的行一次发送多条消息时遇到了类似的问题。通话不会等待对方完成,实际上是互相踩踏,要么挂断,要么炸毁。

我最终找到的解决方案是使用消息队列。接受您的请求并将它们路由到单个 activemq 路由中。

比如:

<camelContext xmlns="http://camel.apache.org/schema/blueprint">
    <route>
       <from uri="direct:direct:DirectProcessOut"/>
       <to uri="activemq://processOutQueue"/>
    </route>
</camelContext>
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
    <route>
       <from uri="activemq://processOutQueue"/>
       <to uri="netty4:tcp://192.168.1.2:8000?sync=true&amp;synchronous=true&amp;reuseChannel=true"/>
    </route>
</camelContext>

我的情况有点不同,所以我不确定这是否会保留您想要发送的信息。但希望它能给你一个开始的地方。

【讨论】:

以上是关于Camel-netty4:如何在发送下一个请求之前等待响应的主要内容,如果未能解决你的问题,请参考以下文章

休息模板 - 如何在发送之前检索原始 POST 请求字符串 [重复]

如何在触发退出 segue 之前执行操作?

如何在使用 res.sendFile() 将请求发送回客户端之前等待文件创建完成

如何在快速向 alamofire 发送请求之前安排数组

如何等待http请求在处理到angular 7中的下一步之前获得响应[重复]

如何在 Alamofire 4.0 中仅使用参数和正文在 swift 中使用 POST 方法发送请求?