首页 > 解决方案 > 使用虚拟主题时,生产者应该发送到常规主题还是虚拟主题?

问题描述

现在我们发布到常规主题并能够使用来自虚拟主题的消息。是合法的方式吗?

不幸的是,从文档中并不清楚这种方法的正确性。

但是,我们注意到一些奇怪的行为

如果没问题,那么我们想按现在的样子使用它。否则,我们需要更改所有队列中的主题名称,确保在没有待处理消息之前。

标签: activemq

解决方案


好的,我在Active MQ in Action一书中找到了答案:

需要一些命名约定以允许虚拟主题正确运行。首先,要确定将主题视为虚拟主题,主题名称应始终遵循 VirtualTopic.<topic name>. 所以如果你想为一个名为 orders 的主题创建一个虚拟主题,你需要创建一个名为 的目的地VirtualTopic.orders。这意味着发布者将消息发送到名为 的主题VirtualTopic.orders。为了从虚拟主题支持的队列中消费,消费者必须订阅名称遵循模式的队列 Consumer.<consumer name>.VirtualTopic.<virtual topic name>


推荐阅读