2013-01-23 37 views
1

我們使用Camel通過ActiveMQ發送消息。在我們的代碼,我們有以下的配置,它的工作原理:使用Camel的@Produce註釋設置ActiveMQ消息頭

@Produce(uri = IEventService.QUEUE_NAME) 
private IProducer sender; 

@Override 
public void emit(final Event e) { 
    sender.emit(e); 
} 

現在,我們要使用ActiveMQ消息羣組: http://activemq.apache.org/message-groups.html

根據該文件,我需要設置的JMSXGroupID在郵件標題。如何獲取消息頭,以便可以在我的emit()api中設置此屬性?

謝謝。 -AP_

回答

0

而是註釋@Produce到IProducer(這你自己定義的,對吧?),你可以做

@EndpointInject(uri = IEventService.QUEUE_NAME) 
private ProducerTemplate sender; 

@Override 
public void emit(final Event e){ 
    sender.sendBodyAndHeader(e,"JMSXGroupID",someId); 
} 

不知道這是確定的,雖然,或者如果你正在使用IProducer爲別的東西。

+0

是的,使用ProducerTemplate也可以發送標題。我們可以考慮使用代理thingy例如@Produce on interface,將第2個參數作爲標題。如果你通過一個地圖,然後它的地圖頭。 –

+0

我登錄了一張票來改進它:https://issues.apache.org/jira/browse/CAMEL-6007 –

+0

彼得,這個解決方案工作得非常好。謝謝! –

0

另一種解決方案是發送到直接:myname端點。然後你有一條從(「direct:myname」)到(IEventService.QUEUE_NAME)的小路線

所以在這條路線中,你可以很容易地添加標題。

相關問題