我刚刚在我的项目.Net core2.0中使用过MassTransit。很好,但有一些问题:
发布与发送之间是不同的。在我的情况下,我有一个电子邮件服务可以将电子邮件发送到外部。其他服务将通过RabbitMQ将请求传递到电子邮件服务。因此,在这种情况下,我们应该使用“发布”或“发送”。
使用发送,我们需要传递端点的完整URL。有管理端点的最佳实践吗?因为如果我们有10个命令,则需要管理10个端点。是吗?
与事件(发布)相关,如果将一个服务部署在多个实例上,则将一个事件发布到队列中。它将被处理一次或在每个实例上被处理多次。
能否请您为我分享一个单元测试?因为使用线束测试,看来我们只是确保消息已排队。
Masstransit是否已准备好用于.Net Core 2.1?
非常感谢,
答案 0 :(得分:2)
对于一个帖子而言,问题太多了,所以更好 逐一提出更具体的问题。您的某些问题已经有关于SO的答案。
发布事件和发送命令之间的区别与您期望的相似。实际上,我们在documentation中介绍了其中的一些内容。
您可以在一个接收端点中处理任意数量的消息类型,但是您需要了解后果。最佳实践是每种命令类型具有一个端点,或者相关命令至少具有一个端点。这里的风险是,一个重要的命令可能会卡在队列中等待,直到其他不重要的命令被处理为止。
如果发布事件,则每个端点(队列)都将获得它的副本。如果您有一个端点的多个实例,则只有其中一个实例可以获取它。它对于发送命令也有效,但是它将是仅一个端点接收消息,并且只有一个实例将对其进行处理。
尽管目前还没有MT测试的文档,但是您可以查看this test来了解它是如何完成的。
MassTransit是为.NET 4.6和.NET Standard 2.0编译的。 .NET Core 2.1中没有什么特别的不同会影响MassTransit。