【问题标题】:Camel route to Websphere MQ , read interval到 Websphere MQ 的骆驼路线,读取间隔
【发布时间】:2015-06-22 02:46:34
【问题描述】:

我在 ActiveMQ 中使用骆驼路由从 websphere MQ 队列读取消息并将消息转发到 activeMQ 队列,它工作正常,但似乎 wmq 读取操作过于频繁(每 1 秒)。 如何定义读取间隔值?例如每 10 秒阅读一次消息?

非常感谢 尼古拉斯

【问题讨论】:

    标签: apache-camel activemq ibm-mq


    【解决方案1】:

    您需要更改用于 MQ 端点的 JmsComponent 的 receiveTimeoutrequestTimeoutCheckerInterval。默认情况下,这些值为 1 秒。

    参考:-http://camel.apache.org/jms.html

    【讨论】:

    • 在 MQ 服务器端,“读取”由骆驼每 5 秒完成一次,即使我将这两个值覆盖为 180000 毫秒......我不明白
    • 仅供参考,我的路线如下:
    • 您能否提供一些有关您用于连接到 Websphere MQ 的通道“CH”的信息。可能在通道配置上有一些 KeepAlive (KAINT) 或 HeartBeat(HBINT) 设置。
    • 您还确定您已尝试按照其他答案的建议更改轮询间隔和重新扫描间隔。 MQ 文档指出默认间隔为 5 秒。 www-01.ibm.com/support/knowledgecenter/SSAW57_8.5.5/…
    • 我在客户端更改了 pollingInterval 但同样的问题,我无法访问 MQ 服务器配置,它在我的提供商手中。
    【解决方案2】:

    更改 jms 组件设置以更改读取队列间隔似乎是一种错误的方法。

    作为 Camel jms 组件底层技术的 Spring JMS 被设计为经常轮询队列。 更改 jms 端点的轮询间隔需要深入了解 Spring JMS 的内部结构。我对这种方法的实验没有得到任何积极的结果。

    满足您要求的另一种方式是轮询消费者。这个想法是定期使用计时器(或石英等其他调度程序)运行队列读取操作。

    from("timer://foo?period=5000").bean("queueReader")
    

    queueReader bean 应该实现队列读取操作。

    但是这种方法有一些缺陷。其中之一是当队列有多个消息时如何处理情况。这需要循环队列读取,但是当现有消息处理时,新消息可能会到达。该站点需要低级别且容易出错的编码。

    您将阅读有关在 Camel here 中轮询消费者的详细信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-05
      • 2018-12-08
      • 2019-10-19
      • 2011-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多