【发布时间】:2018-03-29 14:13:09
【问题描述】:
我一直在使用 MassTransit,非常喜欢它。但是,默认情况下,它使用一些特定于 MassTransit 的 JSON 包装所有 RabbitMQ 有效负载/消息。这使得与非 .NET 服务交换消息变得困难。我知道 JSON 可以被任何语言解析,但 MassTransit 是一个仅限 .NET 的东西,在我的非 .NET 服务中,我希望避免添加特殊逻辑来处理 MassTransit 生成的消息。
是否可以使用不通过“MessageEnvelope”接口的 MassTransit 序列化 JSON 消息以与非 MassTransit 服务建立更好的互操作性?或者这样做会破坏大部分/所有 MassTransit 功能?
【问题讨论】:
-
Alexey 回应了,他的回答是对的。它是 JSON,您会发现信封中的元数据在未来很重要。无论使用哪种语言,消息合约始终是头等大事。 TL;DR:利用数十年的消息传递经验并意识到信封完全有意义。
-
感谢您的回复。您是说如果您与拥有 Java 服务的人一起工作,您会要求他们将所有消息包装在 MessageEnvelope 接口中以确保设置了 MessageId、CorrelationId 等?我正试图弄清楚如何与我公司的非 .NET 同事相处融洽。
-
是的。我会。我们甚至建立了一个项目来为 Java 做这件事,叫做 MassTransit CrossTown :)
-
虽然我很欣赏 MassTransit CrossTown 的创建,但它看起来并没有提供发送和请求/响应模式,这对我来说是一个亮点。我正在研究另一个名为 JTransitLight 的项目,但它也不完整——它们只支持 Bus.Publish。
标签: masstransit