从主题中获取所有消息

时间:2017-01-04 16:03:31

标签: tibco tibco-ems ems tibco-business-works

如何从Tibco中的JMS主题获取所有消息?

我知道我可以使用主题订阅者,但它不能完全满足我的需求。我想每天只启动一个进程,它将读取主题中的所有消息并处理它们。我不能在同一个过程中同时拥有计时器和主题订阅者。

我尝试了"等待JMS主题消息",但似乎只有一条消息,无论我在主题中有多少消息。

3 个答案:

答案 0 :(得分:2)

我会尝试不同的方向。您可以使用2个独立的进程实现此目的。

一个进程,一个主题订阅者(具有持久性),它接收所有消息。默认情况下应禁用此进程启动器(因此侦听器未处于活动状态)。

第二个进程是一个计时器,它将通过Hawk(引擎命令)激活第一个进程。因此,每次订阅者被激活时,它都将开始处理事件。

这里有问题的部分是主题订阅者完成后的停用。为此,您需要一个单独的逻辑,何时停用订户。这也可以通过单独的计时器或某些Hawk规则来完成,当用户没有更多消息时,它会触发。

答案 1 :(得分:1)

我认为最好的解决方案是将JMS主题桥接到队列并使用" JMS队列接收器"在您的流程开始时的活动。

每天启动一次实例后,它将连接并处理队列中的所有消息。

答案 2 :(得分:0)

一个更自然的解决方案(如果可以实现)是仅实现一个主题订阅者(如果主题被桥接到一个队列,则为Queue订阅者),并让BusinessWorks Engine在发布消息时生成Job实例。

这样可以更加均匀地分散工作负载,而不是从主题或队列中获取所有消息。