为什么在MSMQ/RabbitMQ等消息队列系统的基础上,我们需要N服务总线/MassTransit等服务总线框架?
在分布式消息事务世界中,我试图理解开发分布式系统所涉及的不同部分。据我所知,您可以使用带有消息队列系统的企业总线设计消息传递系统。为什么两者都用是个好主意?仅针对消息队列系统进行编程是否可以实现同样的效果?两者结合使用有什么好处?我无法直接评论MassTransit,只是对其进行了修补 我使用NServiceBus,我是它的粉丝。我认为直接使用排队技术是有充分理由的,但我认为使用MSMQ/RabbitMQ运行您自己的ESB要比简单地使用商业产品(或开源产品,如MassTransit)花费更多为什么在MSMQ/RabbitMQ等消息队列系统的基础上,我们需要N服务总线/MassTransit等服务总线框架?,rabbitmq,msmq,nservicebus,distributed-transactions,masstransit,Rabbitmq,Msmq,Nservicebus,Distributed Transactions,Masstransit,在分布式消息事务世界中,我试图理解开发分布式系统所涉及的不同部分。据我所知,您可以使用带有消息队列系统的企业总线设计消息传递系统。为什么两者都用是个好主意?仅针对消息队列系统进行编程是否可以实现同样的效果?两者结合使用有什么好处?我无法直接评论MassTransit,只是对其进行了修补 我使用NServiceBus,我是它的粉丝。我认为直接使用排队技术是有充分理由的,但我认为使用MSMQ/RabbitMQ运行您自己的ESB要比简单地使用商业产品(或开源产品,如MassTransit)花费更多 你
你需要它吗?不。如果这些功能符合您的要求,您的生活会更轻松吗?当然可以。您当然可以直接针对消息传递基础架构进行编码,您会发现每种传输都有其优缺点。然而,在这一过程中,您需要做出许多决策,而这正是服务总线可以提供帮助的地方 直接针对排队系统进行开发将不可避免地导致各种抽象,您需要这些抽象来防止重复 服务总线将提供以下方面的意见/实施:
- 消息传递
- 仅一次(分布式事务-并非所有排队系统都支持分布式事务)
- 至少一次(非事务性)
- 最多一次(可能需要一些事务处理,但您可以不进行分布式事务处理)
- 重试失败的消息
- 请求/答复
- 消息分发
- 发布/订阅(直接使用RabbitMQ可能非常容易,而直接使用MSMQ则不太容易)
- 消息幂等性
- 依赖注入
因此,服务总线可能会为您带来很多开箱即用的东西,而直接针对队列编码可能是一项需要做的工作。“服务总线可能会为您带来很多开箱即用的东西,而直接针对队列编码可能是一项需要做的工作。”。很好的总结。谢谢使用MassTransit在MSMQ上轻松发布/订阅。嗯,不管怎么说,MSMQ上的任何东西都很容易。@stuartd:我的意思是,直接使用RabbitMQ发布/订阅相当容易,而直接使用MSMQ则不然。使用像shuttle esb这样的服务总线肯定会让生活更轻松:)@EbenRoux-yup,ServiceBus-FTW。你的意思在你的回答中并不完全清楚。@stuartd:我编辑了答案,使之更清楚,谢谢。