首页 > 解决方案 > 有没有办法从 .NET 客户端访问 ActiveMQ Artemis 系统日志(由 Broker 插件启用)

问题描述

根据此页面,我已使用代理插件在我们的 Artemis 实例上启用了消息传递日志。为了通过映射发布者-> artemis 服务器-> 订阅者之间的端到端消息传递和接收时间来进行一些分析,我试图查看是否记录到 artemis 日志文件的消息内容(具体为消息 ID ) 可以通过我们拥有的发布和订阅 .NET 应用程序访问。以下是来自 artemis.log 文件的消息的日志,其中 MessageId 指示各种事件。

20:50:24,552 INFO [org.apache.activemq.artemis.core.server.plugin.impl] AMQ841010:路由消息,ID:2231685496,结果:OK

20:50:24,552 INFO [org.apache.activemq.artemis.core.server.plugin.impl] AMQ841009:发送的消息 ID:2231685496,会话名称:9d9c035b-176e-11ea-ab75-020ff9805db8,会话连接 ID:68a7ec34,结果:好的

20:50:24,553 INFO [org.apache.activemq.artemis.core.server.plugin.impl] AMQ841012:将消息 ID 为 2231685496 的消息传递给消费者,地址为:News.Source.T,队列:f0586137-5ad3- 4c77-b2c7-5b68daad672c,消费者会话ID:fcbcd194-3295-11ea-a2c0-0a89c5c4c02a,消费者ID:0

20:50:24,554 INFO [org.apache.activemq.artemis.core.server.plugin.impl] AMQ841014:确认消息 ID:2231685496,messageRef sessionID:fcbcd194-3295-11ea-a2c0-0a89c5c4c02a,messageRef consumerID:0, messageRef QueueName:f0586137-5ad3-4c77-b2c7-5b68daad672c,带有 ackReason:NORMAL

我们为此使用 AMQPNetLite,但没有找到任何可以帮助我们将这些发送和接收的消息与正在写入 artemis.log 文件的日志联系起来的东西。我一直在想了解是否有办法从发布者应用程序上的这些日志中获取 MessageId。非常感谢有关此主题的任何指示。

标签: activemq-artemis

解决方案


消息传递客户端无法从代理的日志文件中获取数据,因为该数据只是在基于文本的日志中,而不是实际上在消息代理本身中。但是,您可以使用类似的东西NotificationActiveMQServerPlugin,而不是记录此信息,而是将带有此信息的消息实际发送到管理通知地址。客户端可以在管​​理通知地址上创建订阅并接收消息,然后根据该信息采取行动。通知消息可能不包含您需要的所有信息,但您可以轻松扩展此类以创建您自己的插件,其中包含您需要的所有信息。


推荐阅读