0
發送到虛擬主題的消息將被分派到名爲「Consumer。*。VirtualTopic」的每個隊列,是否有可能只將這些消息分派到符合條件的特定隊列,而不是所有隊列映射到虛擬主題?在使用虛擬主題時,是否可以將主題中的消息分派給特定的隊列?
發送到虛擬主題的消息將被分派到名爲「Consumer。*。VirtualTopic」的每個隊列,是否有可能只將這些消息分派到符合條件的特定隊列,而不是所有隊列映射到虛擬主題?在使用虛擬主題時,是否可以將主題中的消息分派給特定的隊列?
如果您知道只有一定數量的消費者/隊列,您可以使用複合目標而不是虛擬目標,並使用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。
消費者可以在運行時添加到代理中,所以我猜複合目標不是一個選項。我會考慮駱駝。謝謝你幫助我。 – hellknight
只是一個想法,你可以側身看問題。如果只有一小組過濾器,則將消息發送到不同的虛擬目標 - 每個虛擬目標都對應不同的過濾條件。 –