在我们的团队中,我们通过RabbitMQ在两个系统之间交换消息。消息以protobuf(v3)编码。我们在发送和接收端使用NServiceBus。我们使用RabbitMQ管理UI来监视错误队列。在生产中,我们注意到要理解错误队列中以base64编码的消息的有效负载并不容易。
使人对错误队列中的消息具有可读性的最简单方法是什么?我们对这两个系统中的决策都拥有完全的控制权,并且还讨论了向JSON编码消息(而不是protobuf)的切换。但是我们对基于protobuf的实现感到满意。毕竟已经实现了。
答案 0 :(得分:1)
我不建议为此使用管理UI。在我看来,一个带有脚本客户端的简单脚本或html页面将更易于使用且更防错。
但是,要回答您的问题:只需解码消息并替换文本,简单的javascript解决方案就可以正常工作。
atob
这将仅在RabbitMQ管理UI上的队列页面上选择消息字段,并将其替换为解码后的值(即函数javascript:
)。
要使用此功能,可以从控制台运行它,也可以将其添加为浏览器中的书签。只需使用前缀为javascript:$(".msg-payload").text(atob($(".msg-payload").text()))
的代码,如下所示:
messageReactionAdd
答案 1 :(得分:0)
我有一个类似的问题,我通过(.net)解决了:
webUI
GetMessage
函数将消息获取为base64,然后重新对其进行排队proto
模式的程序集的控制台应用程序Convert.FromBase64String
进行转换ProtoMessageTypeGoesHere.Parser.ParseFrom()
解析原始缓冲区消息然后您可以通过ToString()
将解析后的消息转换为Json(或仅使用c#调试器进行检查)。
没有内置的检查消息的方法,因为您必须使消息出队才能执行此操作-甚至在重新排队时,您也会更改消息顺序。