Masstransit - 发布与发送以及如何管理消息
Mastransit - publish vs send and how to manage message
我刚刚在我的项目.Net core2.0 中使用了MassTransit。很好,但有一些问题:
发布与发送是不同的。在我的场景中,我有一个电子邮件服务可以向外部发送电子邮件。其他服务将通过 RabbitMQ 将请求传递给电子邮件服务。所以,在这种情况下我们应该使用 "Publish" 或 "Send".
使用 Send,我们需要传递完整的 URL 端点。有管理端点的最佳实践吗?因为如果我们有 10 个命令,我们需要管理 10 个端点。对吗?
与事件(Publish)有关,如果一个服务部署在多个实例上,当一个事件被发布到队列中。将在每个实例上处理一次或处理多次。
你能给我分享一个消费者单元测试吗?因为通过线束测试,我们似乎只是确保消息已排队。
Masstransit 准备好迎接 .Net Core 2.1 了吗?
非常感谢,
There are way too many questions for one post tbh, on SO it is better
to ask more specific questions, one by one. Some of your questions already have answers on SO.
发布事件和发送命令的区别和你想象的差不多。我们实际上在 documentation.
中介绍了其中的一些内容
您可以在一个接收端点中处理任意数量的消息类型,但您需要了解后果。最佳做法是为每种命令类型设置一个端点,或者为相关命令设置至少一个端点。这里的风险是一个重要的命令可能会卡在队列中等待,直到处理其他不太重要的命令。
如果您发布事件,每个端点(队列)都会得到一份它的副本。如果您有一个端点的多个实例,那么只有其中一个实例会得到它。它也适用于发送命令,但只有一个端点会收到一条消息,并且只有一个实例会处理它。
虽然目前还没有 MT 测试的文档,但您可以查看 this test 了解它是如何完成的。
MassTransit 是为 .NET 4.6 和 .NET Standard 2.0 编译的。 .NET Core 2.1 中没有对 MassTransit 有任何影响的特别不同。
我刚刚在我的项目.Net core2.0 中使用了MassTransit。很好,但有一些问题:
发布与发送是不同的。在我的场景中,我有一个电子邮件服务可以向外部发送电子邮件。其他服务将通过 RabbitMQ 将请求传递给电子邮件服务。所以,在这种情况下我们应该使用 "Publish" 或 "Send".
使用 Send,我们需要传递完整的 URL 端点。有管理端点的最佳实践吗?因为如果我们有 10 个命令,我们需要管理 10 个端点。对吗?
与事件(Publish)有关,如果一个服务部署在多个实例上,当一个事件被发布到队列中。将在每个实例上处理一次或处理多次。
你能给我分享一个消费者单元测试吗?因为通过线束测试,我们似乎只是确保消息已排队。
Masstransit 准备好迎接 .Net Core 2.1 了吗?
非常感谢,
There are way too many questions for one post tbh, on SO it is better to ask more specific questions, one by one. Some of your questions already have answers on SO.
发布事件和发送命令的区别和你想象的差不多。我们实际上在 documentation.
中介绍了其中的一些内容您可以在一个接收端点中处理任意数量的消息类型,但您需要了解后果。最佳做法是为每种命令类型设置一个端点,或者为相关命令设置至少一个端点。这里的风险是一个重要的命令可能会卡在队列中等待,直到处理其他不太重要的命令。
如果您发布事件,每个端点(队列)都会得到一份它的副本。如果您有一个端点的多个实例,那么只有其中一个实例会得到它。它也适用于发送命令,但只有一个端点会收到一条消息,并且只有一个实例会处理它。
虽然目前还没有 MT 测试的文档,但您可以查看 this test 了解它是如何完成的。
MassTransit 是为 .NET 4.6 和 .NET Standard 2.0 编译的。 .NET Core 2.1 中没有对 MassTransit 有任何影响的特别不同。