是否可以在使用虚拟主题时将主题中的消息仅发送到某个队列?

时间:2013-10-11 07:28:08

标签: activemq

发送到虚拟主题的消息将被分派到名为“Consumer。*。VirtualTopic。”的每个队列中,是否可能只将这些消息分派给符合条件的某些队列,而不是全部映射到虚拟主题的队列?

1 个答案:

答案 0 :(得分:0)

如果您事先知道只有一定数量的使用者/队列,您可以使用复合目标而不是虚拟目标,并使用filteredDestination块根据邮件头做出路由决策。< / p>

<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。