我们有以下情形,我们希望使用Apache的骆驼来解决:骆驼INOUT很长的响应时间
异步请求到达时在骆驼配置的AMQP端点。该消息包含应该用于响应的答复的标题属性。 Camel必须使用JMS将此消息传递给另一个服务,然后将响应从AMQP请求发送回应答队列。这看起来像是在骆驼中使用InOut功能的教科书示例,但是我们遇到了一个问题:JMS服务的回复可能需要很长时间,有些情况下可能需要几天。
据我所知,如果我们使用InOut,这意味着我们会锁定一个线程到长时间运行的服务。如果我们不幸,我们可能会同时发出几个长时间运行的呼叫,而在最坏的情况下,可能是所有线程都忙于等待回复,从而堵塞系统。
我应该使用什么策略来解决上述问题?目前,我已经创建了分隔路由:一个监听AMQP端点并将消息转发给JMS端点。其他路由监听jms系统的replyto-queue,并负责将回复发送回AMQP reply-to。我现在面临的问题是,我应该如何在这两条路线之间存储AMQP回复,并且我不确定这是否是针对此问题的总体解决方案。
有关如何解决此问题的任何提示或想法将不胜感激。
谢谢你的回应。我们选择使用异步风格来解决这个问题,因为把它当作同步处理是没有意义的。 – P3anuts