1

我们使用 Camel 通过 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_

4

2 回答 2

0

除了将 @Produce 注释到 IProducer (您自己定义的,对吗?),您可以这样做

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

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

不确定这是否可以,或者您是否将 IProducer 用于其他用途。

于 2013-01-23T20:28:33.987 回答
0

另一种解决方案是发送到 direct:myname 端点。然后你有一条小路线 from("direct:myname").to(IEventService.QUEUE_NAME)

因此,在这条路线中,您可以轻松添加标题。

于 2013-01-24T08:54:51.760 回答