MassTransit-发送和发布:介于

时间:2018-09-05 09:59:38

标签: multi-tenant masstransit

我已经了解了发送(〜1个使用者称为)和发布(所有使用者称为)之间的区别。在我的环境中,我希望介于两者之间。

例如:

已准备好包裹,并准备好发货。可以发送事件“ ParcelPrepared”。在此事件上,应触发2个操作:“生成发票”和“发送电子邮件”。但是每个动作只能调用一次。

实际上,我只能通过发送来做到这一点,并且两个操作都托管在同一个.net进程中(但我不希望如此)。如果每个动作都托管在不同的进程中,则只会触发其中一个。

如果我使用发布,则将调用所有流程,并且可以发送 N 电子邮件或生成 N 发票,如果流程中断,我将丢失消息。< / p>

我错过了什么吗?

编辑:

这是我想要实现的目标。

Objective

许多“准备包裹”进程可以发出一条消息(我不知道的命令/事件)“准备包裹”。

在发出消息时希望通知不同的使用者(“发票”和“电子邮件发件人”)。每个消费者都被多次实例化。应该仅通知每个消费者一个,以避免处理每个消费者的并发。

每个消费者都可以接收到由于某种原因而丢失的消息,即使只有一部分消费者处于关闭状态(“发票”和“电子邮件发件人”都处于关闭状态)。

1 个答案:

答案 0 :(得分:0)

您的ParcelPrepared是一个活动,应该发布。然后,您可以在不同的过程中有两个使用者,它们将发送命令BuildInvoiceSendEmail。这些命令的使用者将完成工作。

您永远不会丢失消息,因为它们被放置在端点队列中,并且会一直留在那里直到被消耗。

相关问题