按计数从JMS MQ或内存中消息存储读取消息

时间:2015-06-18 08:12:03

标签: jms wso2 wso2esb ibm-mq

我想根据count从JMS MQ或In-memory消息存储中读取消息 就像我想在消息计数为10时开始阅读消息,直到我希望消息处理器处于空闲状态 我希望使用WSO2 ESB完成此任务 有人可以帮助我吗?

感谢。

3 个答案:

答案 0 :(得分:1)

我不熟悉wso2,但从MQ的角度来看,执行此操作的方法是在队列中有10条消息后触发应用程序运行。有针对此的触发设置,特别是TRIGTYPE(DEPTH)

答案 1 :(得分:0)

为了扩展Morag的答案,我怀疑WS02是否有内置的触发器,可以在读取消息之前监视队列的深度。我怀疑它只是侦听队列并在消息到达时处理它们。我也怀疑你可以使用MQ的触发机制来根据深度方便地直接执行流程。因此,尽管触发是一个很好的答案,但您需要一些胶水代码来实现这一点。

方便的是,有一个教程提供了执行此操作所需的几乎所有信息。有关详细信息,请参阅Mission:Messaging: Easing administration and debugging with circular queues。该文章具有使Q程序与MQ触发一起工作所必需的脚本。你只需做一些改变:

  1. 不是向Q发送命令来删除消息,而是发送命令来移动它们。

  2. 抛弃计算要删除的邮件数量的数学运算,并将它们分批移动10次,否则移动所有邮件直到队列耗尽。在后一种情况下,请务必告诉Q等待任何落后者。

  3. 以下是完成时的样子:传入消息落在某个队列其他而不是WS02输入队列。该队列基于深度触发,以便Q程序(SupportPac MA01)将消息复制到真正的WS02输入队列。复制消息后,粘合代码将重置触发器。这种情况一直持续到队列中的消息少于10条为止,此时循环空闲。

答案 2 :(得分:0)

我通过将消息推送到数据库得到它并根据所需的计数得到,因为在我的回答中看看我的answer