Jms 桥接时需要清除Tibco EMS队列

Jms 桥接时需要清除Tibco EMS队列,jms,tibco-ems,Jms,Tibco Ems,我在生产系统上有一个Tibco EMS消息队列,它将消息从单个生产者路由到单个消费者应用程序 我们正在垂直扩展应用程序,但由于财务限制,我们无法成对扩展这两个应用程序 单个生产者将消息路由到MessageBroker,MessageBroker需要基于消息选择器将消息桥接到三个使用者中的一个 我已经设置了一个队列桥和选择器,将生产者队列上的消息路由到消费者队列。这是一个1对多队列网桥 我注意到桥接的消费者队列已将消费者连接到它们,并且它们根据选择器正确接收消息,但是生产者队列保留消息的副本,这些

我在生产系统上有一个Tibco EMS消息队列,它将消息从单个生产者路由到单个消费者应用程序

我们正在垂直扩展应用程序,但由于财务限制,我们无法成对扩展这两个应用程序

单个生产者将消息路由到MessageBroker,MessageBroker需要基于消息选择器将消息桥接到三个使用者中的一个

我已经设置了一个队列桥和选择器,将生产者队列上的消息路由到消费者队列。这是一个1对多队列网桥

我注意到桥接的消费者队列已将消费者连接到它们,并且它们根据选择器正确接收消息,但是生产者队列保留消息的副本,这些副本必须在一天结束时手动清除


使用桥接器和选择器处理此场景的最佳方法是什么,以便消息保留在代理上,直到消息被消费(持久),但一旦消息被消费队列消费,代理将删除该消息。

处理原始队列的这些消息的最简单方法是在队列上引入MaxMsgs和MaxBytes

至于您要求仅当原始队列上的消息在其中一个桥接队列上使用时,才能对其进行处置,这是不可能的


也就是说,它也不需要,因为桥接队列保留自己的消息副本,而不管源队列中的消息发生了什么。因此,在原始队列中过期的消息对已桥接的消息没有影响

谢谢,但是如何计算maxmsg和MaxBytes的数字呢?接收的消息数不确定。它可以是每天1条,也可以是每分钟数千条。如果您不需要源队列中的消息用于任何其他目的,您可以将MaxMsgs设置为1。所以队列只存储最后一条消息。我会试试看。这似乎不像预期的那样有效。写入父队列的生产者应用程序抛出javax.jms.ResourceAllocationException:超出队列限制。当我将Max Messages设置为0时,消息在重试时再次通过。这是由溢出策略导致的行为。要丢弃旧消息,只需将值更改为“discardoold”(或数字“1”)。默认值为“0”,这意味着一旦队列已满,它将拒绝进一步的消息。