使用 Camel 拦截 ActiveMQ 消息
Intercept ActiveMQ message with Camel
我需要注册消息离开 ActiveMQ 队列的时间。
我有 Q1,消费者是 Jboss 服务器上的一个 java 应用程序,通过 activemq-ra.rar.
是否可以使用 Camel(包含在 ActiveMQ 中)拦截器来做到这一点?
我不是程序员,所以 XML DSL 中的解决方案将是完美的。
如有任何帮助,我们将不胜感激。谢谢。
查看日志代理插件。它可以将信息输出到日志,然后您可以使用它来构建指标。
使用 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和原消息属性的消息。
我需要注册消息离开 ActiveMQ 队列的时间。 我有 Q1,消费者是 Jboss 服务器上的一个 java 应用程序,通过 activemq-ra.rar.
是否可以使用 Camel(包含在 ActiveMQ 中)拦截器来做到这一点? 我不是程序员,所以 XML DSL 中的解决方案将是完美的。
如有任何帮助,我们将不胜感激。谢谢。
查看日志代理插件。它可以将信息输出到日志,然后您可以使用它来构建指标。
使用 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和原消息属性的消息。