1

我已经通过 MassTransit(使用 RabbitMQ)实现了竞争消费者模式,并且由于处理单个命令,需要发布其他三个命令。我想在“全有或全无”(事务样式)发布中执行此操作,其中“全部”将确保三个消息成功发送到 RabbitMQ,或者没有,我的 3 个事件都不会发送到 RabbitMQ,即使是第三个失败的出版。

到现在为止,我一直只是简单地调用 message.Respond(new MyNewCommandHere(){...}),但我在任何地方或 IServiceBus 实例上都看不到批量接口。

所以......是否可以以某种方式进行批量发布,或者其他一些推荐的方式来获得这种事务性发布行为?

4

1 回答 1

3

没有“批量发布”选项。您可以发布实现 3 个接口的类型,它们将被串行发布。

MSMQ 具有事务队列。您可以打开一个事务,发送到两个队列并仅在需要时回滚。不过我不推荐 MSMQ,RabbitMQ 是一个更强大的平台。

这是您遇到的错误还是您正在尝试解决尚未遇到的问题?MassTransit 确实有一些围绕连接的重试尝试。如果您在消费者期间发布,除非您有真正长期运行的消费者,否则很难看到连接断开。

于 2013-11-15T12:32:18.003 回答