activemq-artemis - 有没有办法从 .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。非常感谢有关此主题的任何指示。
解决方案
消息传递客户端无法从代理的日志文件中获取数据,因为该数据只是在基于文本的日志中,而不是实际上在消息代理本身中。但是,您可以使用类似的东西NotificationActiveMQServerPlugin
,而不是记录此信息,而是将带有此信息的消息实际发送到管理通知地址。客户端可以在管理通知地址上创建订阅并接收消息,然后根据该信息采取行动。通知消息可能不包含您需要的所有信息,但您可以轻松扩展此类以创建您自己的插件,其中包含您需要的所有信息。
推荐阅读
- bash - 来自非前缀子字符串的 Git 分支名称选项卡完成
- php - 我的 php 登录脚本无法正常工作
- vert.x - 消息在 2 个不同 Vertx 实例下的 2 个顶点之间传递。是否可以?
- react-native - 如何在 React Native 中显示特定的国家地图
- php - 如何将变量传递给布局页面PHP
- c++ - c++中循环链表的析构函数?
- javascript - 如何在html5中实时滚动视频的转录
- google-cloud-platform - Tailwind CSS 未在 Google Cloud Platform 上的生产环境中显示
- ansible - Ansible Vault 如何检测错误密码?
- python - Python如何制作可以是“for”或“while”的循环,具体取决于是否存在上限