使用 Camel 拦截 ActiveMQ 消息

Intercept ActiveMQ message with Camel

我需要注册消息离开 ActiveMQ 队列的时间。 我有 Q1,消费者是 Jboss 服务器上的一个 java 应用程序,通过 activemq-ra.rar.

是否可以使用 Camel(包含在 ActiveMQ 中)拦截器来做到这一点? 我不是程序员,所以 XML DSL 中的解决方案将是完美的。

如有任何帮助,我们将不胜感激。谢谢。

查看日志代理插件。它可以将信息输出到日志,然后您可以使用它来构建指标。

参考:Logging Broker Plugin

使用 advisoryForConsumed 并将咨询消息转发到队列解决了我的问题。

在activemq.xml中:

<destinationPolicy>
    <policyMap>
        <policyEntries>
            <policyEntry queue="Q1" advisoryForConsumed="true"/>
        </policyEntries>
    </policyMap>
</destinationPolicy>

然后将 ActiveMQ.Advisory.MessageConsumed.Queue.Q1 转发到另一个队列 AvisoryConsumed。

<destinationInterceptors> 
    <virtualDestinationInterceptor> 
        <virtualDestinations> 
            <compositeTopic name="ActiveMQ.Advisory.MessageConsumed.Queue.Q1" >
                <forwardTo><queue physicalName="AvisoryConsumed" /> </forwardTo>
        </compositeTopic>
    </virtualDestinations>
</virtualDestinationInterceptor>

那么当消息被消费时,AvisoryConsumed中会有brokerOutTime和原消息属性的消息。