Http ApacheCamel体系结构

Http ApacheCamel体系结构,http,apache-camel,ibm-mq,Http,Apache Camel,Ibm Mq,我正在为我的公司设计一个新的web服务原型,我们正在考虑将ApacheCamel作为我们的集成框架。下面是高级体系结构的简要介绍: -IBM Websphere MQ作为队列解决方案 1) 我们收到http请求 2) 异步持久化此请求 3a)对请求进行一些处理 3b)发送到另一层进行进一步处理 4) 在数据库中异步更新请求记录 5) 回应来电者 我想做的是: 当http请求传入时,将其放入要处理的队列中,并等待n秒。如果web处理程序在n秒内没有收到响应,请使用自定义消息答复调用方 一旦请求位于

我正在为我的公司设计一个新的web服务原型,我们正在考虑将ApacheCamel作为我们的集成框架。下面是高级体系结构的简要介绍:

-IBM Websphere MQ作为队列解决方案

1) 我们收到http请求

2) 异步持久化此请求

3a)对请求进行一些处理

3b)发送到另一层进行进一步处理

4) 在数据库中异步更新请求记录

5) 回应来电者

我想做的是:

当http请求传入时,将其放入要处理的队列中,并等待n秒。如果web处理程序在n秒内没有收到响应,请使用自定义消息答复调用方 一旦请求位于处理队列上,驼峰路由将侦听该队列以进行处理。当它从队列中提取消息时,将请求的副本放在另一个队列上以异步方式持久化。对请求进行一些处理。然后将其发送到另一个队列进行进一步处理,并等待响应。然后将其放回要异步更新的持久队列。 然后响应web侦听器。然后web侦听器响应web调用者

我正在尽我所能阅读有关ApacheCamel的所有信息,其中有很多信息。我可能会遇到一点信息过载问题,如能在以下方面提供帮助,我将不胜感激:

(一) 如果web侦听器使用未定义replyTo队列的InOut exchange(第一个处理层),它将为响应创建一个临时队列。如果此请求超时会发生什么情况?我知道我可以在exchange上设置requestTimeout,如果超时,则捕获该异常并设置自定义消息。但是,这个临时队列会被杀死吗?或者,随着请求超时,它们会随着时间的推移而增加吗

(二) 当涉及到扩展处理层(在不同的机器上添加相同路由的更多实例)时,如果拾取响应的实例(使用固定的应答队列)不同于拾取请求的实例,则有关原始请求的所有信息都在消息中,因此,不需要跨实例共享数据(当然,除非有共享的数据,比如aggregates之类)

在构建这样的系统时,任何其他提示和技巧都将非常有用


谢谢

我想说这个解决方案太复杂了,而且有太多的领域在维护和复杂性方面都很困难。混合异步和同步通信的步骤太多

为什么不简单地解决以下步骤:

  • 同步http请求
  • 将消息放在MQ上,并回复到标头
  • 消息被拾取并发送到后端
  • 如果在给定时间内未收到回复,则终止交易
  • 已删除对队列的答复
  • 通知请求者

  • 您是在请求/应答场景中工作,还是将对调用方的响应发送到另一个URI?对于启动的http请求,即req/reply。。。但是在后端,会有一些没有应答的异步请求,以及一些使用临时/固定应答队列的请求/应答