如何从 Tibco 中的 JMS 主题获取所有消息?
我知道我可以使用主题订阅者,但它并不完全符合我的需求。我想每天只启动一次进程,该进程将读取来自某个主题的所有消息并进行处理。我不能在同一进程中同时拥有计时器和主题订阅者。
我尝试使用“等待 JMS 主题消息”,但无论主题中有多少条消息,它似乎都只收到一条消息。
如何从 Tibco 中的 JMS 主题获取所有消息?
我知道我可以使用主题订阅者,但它并不完全符合我的需求。我想每天只启动一次进程,该进程将读取来自某个主题的所有消息并进行处理。我不能在同一进程中同时拥有计时器和主题订阅者。
我尝试使用“等待 JMS 主题消息”,但无论主题中有多少条消息,它似乎都只收到一条消息。
我会尝试不同的方向。您可以使用 2 个单独的进程来实现这一点。
一个进程,一个接收所有消息的主题订阅者(具有持久性)。默认情况下应禁用此进程启动器(因此侦听器不活动)。
第二个进程是一个计时器,它将通过 Hawk(Engine Command)激活第一个进程。所以每次订阅者被激活时,它都会开始处理事件。
这里有问题的部分是主题订阅者在完成后停用。为此,您需要一个单独的逻辑,何时停用订阅者。当订阅者没有更多消息时,这也可以通过单独的计时器或触发的某些 Hawk Rule 来完成。
我认为最好的解决方案是将 JMS 主题连接到队列并在流程开始时使用“JMS 队列接收器”活动。
每天启动一次实例后,它将连接并处理队列中的所有消息。
一个更自然的解决方案(如果可以实现的话)是只实现一个主题订阅者(或者如果主题桥接到队列,则为队列订阅者),并让 BusinessWorks 引擎在消息发布时生成作业实例。
与从主题或队列中获取所有消息相比,这允许更均匀地分布工作负载。