在使用 Camel 的 @Produce 注释时设置 ActiveMQ 消息标头



我们使用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 中设置此属性?

谢谢。-美联社_

与其将

@Produce注释给 IProducer(你自己定义,对吧?),你可以这样做

@EndpointInject(uri = IEventService.QUEUE_NAME)
private ProducerTemplate sender;
@Override
public void emit(final Event e){
   sender.sendBodyAndHeader(e,"JMSXGroupID",someId);
}

不确定这是否可以,或者您是否正在使用 IProducer 进行其他操作。

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

因此,在此路由中,您可以轻松添加标头。

最新更新