【发布时间】:2020-05-04 13:20:32
【问题描述】:
我的团队正在考虑是否可以将公共交通作为 RabbitMq 中的 sagas 的主要解决方案(与 NServiceBus 相比)。我承认,我们对诸如masstransit 和nserviceBus 之类的解决方案的经验很少,并且我们已经开始将消息传递引入我们的系统。如果我的问题很简单甚至愚蠢,我很抱歉。 但是,当我查看公共交通文件时,我注意到我不确定这是否可以解决我们的一个案例。
案例如下: 我们的组件之一将产生多达 100 条消息,这些消息将被“发送”到队列中。这些消息是系统中单个操作的结果。所有消息都将具有相同的相关 ID 和我们的内部发布 ID(也相同)。
1) 是否可以定义一个单实例 saga(通过相关 id),它会等到它从队列中接收到所有消息,然后将它们作为一个批次处理?
2) 否则,是否有任何解决方案可以确保所有发送的消息都得到处理? (一致性批次?)我假设相关的 Id 将用作找到现有 saga 实例(单例)的一种方式。在理想情况下,我想完成一个 saga 的实例,当系统将处理属于单个组(一个出版物)的每条消息时
我也查看 CompositeEvent,但我不确定是否可以使用它来“确保”处理每条消息,然后我会让完成特定相关 Id 的 saga。
你能解释一下它是如何实现的吗?以及我应该研究什么机制才能将具有相同 id 的大量消息关联到单个 saga,然后在所有 msg 都被消耗的情况下完成?
提前感谢您的任何回复
【问题讨论】:
标签: masstransit saga