我在ActiveMQ中使用camel路由以便从websphere MQ队列读取消息并将消息转发到activeMQ队列,它工作正常但似乎wmq读取操作太频繁(每1秒)。 如何定义读取间隔值?例如,每隔10秒读取一次消息?
很多 尼古拉斯
答案 0 :(得分:1)
您需要更改用于MQ端点的JmsComponent的receiveTimeout
和requestTimeoutCheckerInterval
。默认情况下,这些值为1秒。
答案 1 :(得分:-1)
更改读取队列间隔更改jms组件设置似乎是错误的方法。
用作Camel jms组件的底层技术的Spring JMS经常用于轮询队列。 更改jms端点的轮询间隔需要深入了解Spring JMS的内部。我使用这种方法的实验没有得到任何积极的结果。
满足您要求的另一种方式是投票消费者。这个想法定期用计时器(或石英等其他调度程序)运行队列读取操作。
from("timer://foo?period=5000").bean("queueReader")
queueReader bean应该实现队列读取操作。
但这种方法有一些pifalls。其中之一是当队列有多个消息时如何处理情况。这需要循环队列读取,但新消息可以在现有消息处理时到达。这种引用需要低级别和容易出错的编码。
您将在Camel here
中阅读有关轮询消费者的详细信息