2013-10-11 29 views

回答

0

如果您知道只有一定數量的消費者/隊列,您可以使用複合目標而不是虛擬目標,並使用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。

+0

消費者可以在運行時添加到代理中,所以我猜複合目標不是一個選項。我會考慮駱駝。謝謝你幫助我。 – hellknight

+0

只是一個想法,你可以側身看問題。如果只有一小組過濾器,則將消息發送到不同的虛擬目標 - 每個虛擬目標都對應不同的過濾條件。 –

相關問題