如何从MassTransit Consume(IConsumeContext <t>)方法发布多个命令(全部或全部)</t>

时间:2013-11-15 00:56:38

标签: c# transactions rabbitmq masstransit

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

到目前为止,我一直在调用message.Respond(new MyNewCommandHere(){...}),但我在IServiceBus实例的任何地方都没有看到批量接口。

那么......是否有可能以某种方式进行批量发布,或者其他一些推荐的方式来获取此事务发布行为?

1 个答案:

答案 0 :(得分:3)

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

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

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