最大系统间兼容性-纯RabbitMQ或NServiceBus、MassTransit?

最大系统间兼容性-纯RabbitMQ或NServiceBus、MassTransit?,rabbitmq,message-queue,nservicebus,esb,servicebus,Rabbitmq,Message Queue,Nservicebus,Esb,Servicebus,如果我需要最大的系统间/语言兼容性,而主服务器将在.NET上实现,那么我可以使用NServiceBus或MassTransit,还是使用纯RabbitMQ更好? NServiceBus或MassTransit将提供相当好的abstracrion级别,但不同解决方案和环境之间的轻松通信至关重要。我现在考虑更多地使用纯RabbitMQ,但如果我考虑错了,我将非常感谢您指出一些优点和缺点。如果您有多个内部使用不同语言的应用程序必须发送和接收消息,我不推荐NServiceBus或MassTransit。

如果我需要最大的系统间/语言兼容性,而主服务器将在.NET上实现,那么我可以使用NServiceBus或MassTransit,还是使用纯RabbitMQ更好?
NServiceBus或MassTransit将提供相当好的abstracrion级别,但不同解决方案和环境之间的轻松通信至关重要。我现在考虑更多地使用纯RabbitMQ,但如果我考虑错了,我将非常感谢您指出一些优点和缺点。

如果您有多个内部使用不同语言的应用程序必须发送和接收消息,我不推荐NServiceBus或MassTransit。它们需要自己添加的某些消息头。您永远无法利用这些消息传递框架提供的所有功能。但是,如果您在内部都是.NET,并且有多个应用程序将使用消息传递基础设施,那么NServiceBus和MassTransit将增加很多价值

关于与第三方的互操作性。NServiceBus和MassTransit的一个优点和缺点是,您必须以强类型类或接口的形式发送和接收消息。它们被序列化为JSON/XML/BSON等,并再次反序列化为类型

因此,它们需要指示用于反序列化目的的消息类型的消息头。如果没有消息类型头,它们将无法工作

使用类型要容易得多,但可能会导致互操作性问题。当与发送XML或JSON消息(无类型)的第三方集成时,需要在服务和第三方之间创建转换层

您可以转换为映射到XML/JSON的自己的类型,或者转换为包含XML/JSON字符串属性的简单类型。无论哪种方式,您的翻译层都将使用MassTransit/NServiceBus在内部发布消息,因此消息将包含所有必要的头,以充分利用它们提供的所有功能

为了向第三方发送消息,转换层将消息转换为第三方期望的XML/JSON

您的信息系统中有多少涉及第三方/系统间集成?如果答案很小,那么NServiceBus和MassTransit将是不错的选择,因为它们提供了很多很棒的功能

如果答案很多,那么它们可能仍然是不错的选择。拥有翻译层将保护您的内部服务不受第三方的需求和不断变化的模式的影响。它将以额外的运动部件为代价,为您提供更大的控制和灵活性

最终,转换层并不像实现NServiceBus和MassTransit提供的现成模式那样复杂。所以我会认真考虑它们作为一个可行的选择。 关于互操作性的一些链接


如果您有多个内部使用不同语言的应用程序必须发送和接收消息,我不建议使用NServiceBus或MassTransit。它们需要自己添加的某些消息头。您永远无法利用这些消息传递框架提供的所有功能。但是,如果您在内部都是.NET,并且有多个应用程序将使用消息传递基础设施,那么NServiceBus和MassTransit将增加很多价值

关于与第三方的互操作性。NServiceBus和MassTransit的一个优点和缺点是,您必须以强类型类或接口的形式发送和接收消息。它们被序列化为JSON/XML/BSON等,并再次反序列化为类型

因此,它们需要指示用于反序列化目的的消息类型的消息头。如果没有消息类型头,它们将无法工作

使用类型要容易得多,但可能会导致互操作性问题。当与发送XML或JSON消息(无类型)的第三方集成时,需要在服务和第三方之间创建转换层

您可以转换为映射到XML/JSON的自己的类型,或者转换为包含XML/JSON字符串属性的简单类型。无论哪种方式,您的翻译层都将使用MassTransit/NServiceBus在内部发布消息,因此消息将包含所有必要的头,以充分利用它们提供的所有功能

为了向第三方发送消息,转换层将消息转换为第三方期望的XML/JSON

您的信息系统中有多少涉及第三方/系统间集成?如果答案很小,那么NServiceBus和MassTransit将是不错的选择,因为它们提供了很多很棒的功能 理性

如果答案很多,那么它们可能仍然是不错的选择。拥有翻译层将保护您的内部服务不受第三方的需求和不断变化的模式的影响。它将以额外的运动部件为代价,为您提供更大的控制和灵活性

最终,转换层并不像实现NServiceBus和MassTransit提供的现成模式那样复杂。所以我会认真考虑它们作为一个可行的选择。 关于互操作性的一些链接


我在这里回答了一个类似的问题:我在这里回答了一个类似的问题:你好!谢谢你的解释。在您的帖子中,我唯一没有完全理解的是,翻译层是否应该直接与RebbitMQ对话,或者该层是否应该与NServiceBus/MassTransin一起工作,比如序列化为JSON字符串并通过NServiceBus/MassTransin发送?其思想是,翻译层向您的内部系统讲述NServiceBus/MassTransin,并讲述任何内容向第三方提供外部协议/技术。细节取决于你的具体情况。如果你能再详细一点,我的回答就不会那么抽象了。总结这一点的句子,IMO最终是最好的,翻译层没有实现NServiceBus和MassTransit提供的开箱即用模式那么复杂。所以我会认真考虑他们作为一个可行的选择。谢谢你的解释。在您的帖子中,我唯一没有完全理解的是,翻译层是否应该直接与RebbitMQ对话,或者该层是否应该与NServiceBus/MassTransin一起工作,比如序列化为JSON字符串并通过NServiceBus/MassTransin发送?其思想是,翻译层向您的内部系统讲述NServiceBus/MassTransin,并讲述任何内容向第三方提供外部协议/技术。细节取决于你的具体情况。如果你能再详细一点,我的回答就不会那么抽象了。总结这一点的句子,IMO最终是最好的,翻译层没有实现NServiceBus和MassTransit提供的开箱即用模式那么复杂。所以我会认真考虑他们作为一个可行的选择。