有关ActiveMQ Artemis中过滤的问题。
如果我有一个名为MyQueue.IN的队列和一个仅接受特定JMS标头的过滤器。假设是ORDER。
在Broker.xml中,标记
<core>
<configuration-file-refresh-period>5000</configuration-file-refresh-period>
<queues>
<queue name="MyQueue.IN">
<address>MyQueue.IN</address>
<filter string="TOSTATUS='ORDER'"/>
<durable>true</durable>
</queue>
</queues>
</core>
当我阅读手册时,更改Broker.xml,现在应该每5秒重新发布一次Broker.xml中的配置。
但是当我将过滤器更改为
<filter string="TOSTATUS='ORDERPICKUP'"/>
ActiveMQ Artemis中的配置未更改。
即使重新启动节点也不行。
它在集群中,但是我都改变了两侧的Broker.xml。
关于如何更改队列过滤器的任何想法?最好通过更改Broker.xml
/ Zeddy
答案 0 :(得分:1)
您正在看到预期的行为。尽管此行为可能不直观或特别不友好,但这是为了保护数据完整性。队列是不可变的,因此一旦创建队列就无法更改。因此,要“更改”队列,必须将其删除并重新创建。当然,删除队列意味着丢失队列中的所有消息,这可能是灾难性的。通常,有两种删除队列并重新创建队列的方法:
<config-delete-queues>FORCE</config-delete-queues>
中设置<address-setting>
。但是,这种方法目前存在问题,可以通过ARTEMIS-2076解决。