RabbitMQ跨平台访问问题

时间:2018-04-18 07:17:39

标签: rabbitmq

我正在研究rabbitMQ并使用C#.net客户端,发布者和订阅者组件由两个不同的团队负责设计和管理。

设计发布者的第1组通过将类型A转换为字节数组来发送消息。 设计订户的团队2接收团队A发布的字节数据,需要将其转换为A类进行进一步处理。

演示消息类型

class Message
{
    public string Name { get; set; } = "Publishing message to Q";
}

因此,在这种情况下,两个团队是否需要处理共享"类型A"因为如果两个团队在他们的最后保持相同的消息类型,那么它就不起作用。

是否有可能使用JSON类型的消息结构存储在RabbitMQ中,因此系统都可以将它用于跨平台。我在互联网上搜索,发现RabbitMQ服务器只存储字节。

此外,我们的发布者客户端之一是基于Java构建的,因此如何使用Java客户端与其进行通信,并在其自身端管理消息有效负载类型。

我没有找到关于rabbitMQ的任何好的文档。

1 个答案:

答案 0 :(得分:0)

我在rammitMQ .net客户端GIT论坛上问过同样的回复,RabbitMQ只对字节有效,我们可以按照以下方式实现跨平台访问:

“RabbitMQ不知道消息的内容,并认为消息是一组字节。这意味着您可以以任何方式自由地序列化数据。您可以设置消息属性以指示消息的内容类型和内容编码,然后消费者将使用该信息来适当地反序列化消息正文。

请注意,RabbitMQ不关心任何消息属性是什么,并且总是将消息视为字节blob。

在您的情况下,使用.NET JSON库将您的消息序列化为类或DTO到JSON。您可以使用消息头来指示已序列化的类。然后,消费方可以使用此信息来了解如何反序列化JSON。“ https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/413