apache-camel - ActiveMQ 从代理接受来自 Apache Camel 的传入连接
问题描述
我有以下配置:
- 运行 Apache Camel 2.20.2 的两个正在运行的 Tomcat 实例,它们使用竞争消费者概念来读取同一 JMS 消息队列的消息
- 使用共享 kahaDB 的主/从配置中的 ActiveMQ 5.15.0
碰巧其中一个 Camel 实例连接到从属代理,即使从属代理未处于活动状态(即,据我从日志文件中可以看出,它没有锁定 kahaDB)。
当发生这种情况时,该 Camel 实例上的路由被阻塞,我们得到 aExchangeTimedOutException
并且这阻塞了路由并且消息正在排队。
WARN EndpointMessageListener:213 - Execution of JMS message listener failed. Caused by: [org.apache.camel.RuntimeCamelException - org.apache.camel.ExchangeTimedOutException: The OUT message was not received within: 30000 millis. Exchange[ID-MXPBMES-01P-I02-1625784159041-1-16108]]
从代理接受来自客户端应用程序(在我们的例子中是骆驼)的连接是否正常?
解决方案
二级代理不应该接受连接,所以这听起来像是一个错误,尽管您没有使用最新的代理,所以在做任何事情之前,您应该更新到最新版本,因为总会有错误修复。
如果底层文件系统不提供可靠的锁定机制,可能会出现一些问题,这会导致主代理和备份代理都变得活跃。
推荐阅读
- javascript - 带有 javascript 和自动填充输入的贷款计算器
- botframework - 在 ms 团队中,AdaptiveCard 显示为没有应用程序图标/名称
- javascript - 如何在 Sapper 中持久化 UI 组件状态数据?
- ms-word - 我可以在 Microsoft Word 中创建一种仅更改文本的一个属性的样式吗?
- python - tkinter:如何让标签的子类显示在屏幕上?
- java - 使用 SHA-384 签署 ECDSA 时出现“标量不在区间 [1, n - 1] 内”异常
- node.js - 如何在 Node JS 中调试 ssl 日志
- reactjs - 创建反应应用程序 - 如何将 pdf.worker.js 文件从 pdfjs-dist/build 复制到项目的输出文件夹?
- google-apps-script - Googel Apps 脚本测试部署 - “很抱歉,发生服务器错误。请稍候,然后重试。”
- php - 如何在输入类型按钮中有日期选择器值?