微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以原子地向rabbitMQ发布两条消息?

如何解决是否可以原子地向rabbitMQ发布两条消息?

这是一个足够常见的用例,当某个给定的事实发生在后端服务上时,就会发布一个事件。但是,假设我想发布两个或更多不同的事件以响应发生的这个事实,是否可以使用 rabbitMQ 来保证全有或全无(所有消息都发布到交换或没有消息)?>

AMQP 规范定义了一个具有事务语义的 tx 类,rabbitMQ 文档上有一个 page,这相当令人困惑。它指出:

AMQP 仅在事务涉及单个队列时才保证原子性,即 tx 内的所有发布都被路由到单个队列......此外,即使在事务仅涉及单个队列的情况下,RabbitMQ 也不提供原子性保证,例如tx.commit 期间的错误可能会导致在代理重启后,事务发布的子集出现在队列中。

这一切背后的真相是什么,在向rabbitMQ 发布两条或多条消息(到同一个交换,但可能被路由到不同的队列)时,是否可能有全有或全无的语义?如果没有,有没有办法达到同样的效果

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。