gpt4 book ai didi

http - Apache Camel 架构

转载 作者:可可西里 更新时间:2023-11-01 17:34:54 31 4
gpt4 key购买 nike

我正在为我的公司设计一个新的网络服务原型(prototype),我们正在考虑将 Apache Camel 作为我们的集成框架。以下是高级架构的简要介绍:

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

1) 我们收到http请求

2) 异步持久化这个请求

3a) 对请求做一些处理

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

4) 异步更新DB中的请求记录

5) 回复来电

我想做的是:

当有http请求进来时,将其放入待处理队列中等待n秒。如果 Web 处理程序在 n 秒内没有得到响应,则使用自定义消息回复调用者一旦请求在处理队列中, Camel 路线就会监听这个队列进行处理。当它从队列中提取消息时,将请求的副本放在另一个队列中以异步保存。对请求做一些处理。然后将其发送到另一个队列进一步处理并等待响应。然后放回持久化队列异步更新。然后响应网络监听器。然后网络监听器响应网络调用者。

我正在尽我所能阅读有关 Apache Camel 的所有信息,其中有很多相关信息。我可能有点信息过载,非常感谢对以下问题的任何帮助:

1)如果 Web 监听器使用没有定义 replyTo 队列的 InOut 交换(具有第一处理层),它将为响应创建一个临时队列。如果这个请求超时会发生什么?我知道我可以在交换上设置 requestTimeout,如果它超时,则捕获该异常并设置自定义消息。但是,那个临时队列会被杀死吗?或者它们会随着请求超时而逐渐增加吗?

2)当谈到扩展处理层(在不同的机器上添加更多相同路由的实例)时,如果获取响应的实例(使用固定的队列回复)与获取响应的实例不同,这是惯例吗?请求,关于原始请求的所有信息都在消息中,因此不需要跨实例共享数据(当然除非有共享的数据,如聚合等)?

在构建这样的系统时,任何其他提示和技巧都会非常有帮助。

谢谢!

最佳答案

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

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

  1. 同步http请求
  2. 将消息放在 MQ 上并回复标题
  3. 消息被提取并发送到后端
  4. 如果在给定时间内未收到回复,则交易终止。
  5. 对队列的回复已删除
  6. 通知请求者。

关于http - Apache Camel 架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34583060/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com