我一直在使用MassTransit并且非常喜欢它。但是,默认情况下,它会使用特定于MassTransit的某些JSON包装所有RabbitMQ有效负载/消息。这使得很难与非.NET服务交换消息。我知道JSON可以被任何语言解析,但MassTransit只是一个.NET的东西,在我的非.NET服务中,我想避免添加特殊的逻辑来处理由MassTransit生成的消息。
是否可以使用不通过“MessageEnvelope”接口的MassTransit序列化JSON消息,以便与非MassTransit服务建立更好的互操作性?或者这会打破大部分/全部MassTransit功能吗?
答案 0 :(得分:6)
是described in the documentation。
由于消息格式是预先定义的,因此您无法避免使用某些特殊逻辑来消费MT消息。
这是一条最小的消息:
{
"destinationAddress": "rabbitmq://localhost/input_queue",
"headers": {},
"message": {
"value": "Some Value",
"customerId": 27
},
"messageType": [
"urn:message:MassTransit.Tests:ValueMessage"
]
}