【发布时间】:2015-06-22 02:46:34
【问题描述】:
我在 ActiveMQ 中使用骆驼路由从 websphere MQ 队列读取消息并将消息转发到 activeMQ 队列,它工作正常,但似乎 wmq 读取操作过于频繁(每 1 秒)。 如何定义读取间隔值?例如每 10 秒阅读一次消息?
非常感谢 尼古拉斯
【问题讨论】:
标签: apache-camel activemq ibm-mq
我在 ActiveMQ 中使用骆驼路由从 websphere MQ 队列读取消息并将消息转发到 activeMQ 队列,它工作正常,但似乎 wmq 读取操作过于频繁(每 1 秒)。 如何定义读取间隔值?例如每 10 秒阅读一次消息?
非常感谢 尼古拉斯
【问题讨论】:
标签: apache-camel activemq ibm-mq
您需要更改用于 MQ 端点的 JmsComponent 的 receiveTimeout 和 requestTimeoutCheckerInterval。默认情况下,这些值为 1 秒。
【讨论】:
更改 jms 组件设置以更改读取队列间隔似乎是一种错误的方法。
作为 Camel jms 组件底层技术的 Spring JMS 被设计为经常轮询队列。 更改 jms 端点的轮询间隔需要深入了解 Spring JMS 的内部结构。我对这种方法的实验没有得到任何积极的结果。
满足您要求的另一种方式是轮询消费者。这个想法是定期使用计时器(或石英等其他调度程序)运行队列读取操作。
from("timer://foo?period=5000").bean("queueReader")
queueReader bean 应该实现队列读取操作。
但是这种方法有一些缺陷。其中之一是当队列有多个消息时如何处理情况。这需要循环队列读取,但是当现有消息处理时,新消息可能会到达。该站点需要低级别且容易出错的编码。
您将阅读有关在 Camel here 中轮询消费者的详细信息
【讨论】: