最近,我一直在研究使用C#实现发布/订阅的方法,其中RabbitMQ是我的关注点。我更习惯于使用NServiceBus。NServiceBus通过在
我发现,在RabbitMQ的C#客户端API中有一个
TransactionScope
中注册MSMQ来处理事务。其他支持事务的操作也可以在同一个TransactionScope
中注册(如MSSQL),因此一切都是真正原子的。在底层,NSB引入了MSDTC进行协调。我发现,在RabbitMQ的C#客户端API中有一个
IModel.TxSelect()
和IModel.TxCommit()
。这很好地解决了在提交之前不向交换机发送消息的问题。这覆盖了向交换机发送多个需要原子处理的消息的情况。然而,是否有一种良好的方法将数据库调用(比如MSSQL)与RabbitMQ事务同步?