【发布时间】:2013-10-14 18:11:02
【问题描述】:
发送到虚拟主题的消息将被分派到名为“Consumer.*.VirtualTopic.”的每个队列,这样的消息是否可能仅被分派到符合条件的特定队列,而不是所有的映射到虚拟主题的队列?
【问题讨论】:
标签: activemq
发送到虚拟主题的消息将被分派到名为“Consumer.*.VirtualTopic.”的每个队列,这样的消息是否可能仅被分派到符合条件的特定队列,而不是所有的映射到虚拟主题的队列?
【问题讨论】:
标签: activemq
如果您预先知道只有一定数量的消费者/队列,您可以使用复合目的地而不是虚拟目的地,并使用 filteredDestination 块根据消息头做出路由决策。
<destinationInterceptors>
<virtualDestinationInterceptor>
<virtualDestinations>
<compositeQueue name="orders">
<forwardTo>
<filteredDestination selector="odd = 'yes'" queue="orders.odd"/>
<queue physicalName="orders.accounting" />
<queue physicalName="orders.warehouse" />
<queue physicalName="orders.crm" />
</forwardTo>
</compositeQueue>
</virtualDestinations>
</virtualDestinationInterceptor>
</destinationInterceptors>
对于更复杂的路由决策,您应该考虑使用外部路由引擎,例如 Apache Camel。
【讨论】: