当前位置:   article > 正文

RabbitMQ怎么保证消息的可靠性(四种常见方法)_rabbitmq如何保证消息的可靠性

rabbitmq如何保证消息的可靠性


RabbitMQ怎么保证消息的可靠性

RabbitMQ怎么保证消息的可靠性

1.持久化

交换机、队列、消息可以设置为持久化。

声明exchande 时设置持久化 (durable = true) 并且不自动删除(autoDelete = false)。

声明queue时设置持久化 (durable = true) 并且不自动删除(autoDelete = false)。

发送消息时通过设置deliveryMode=2 持久化消息。

消息持久化意味着当消息进入队列时,它将被写入磁盘而不是仅保存在内存中,broker重启之后持久化的消息会投递到原先的队列上。

在broker重启之后,持久化的交换机、队列会重新初始化。

2.确认机制

2.1发布确认模式

在RabbitMQ中,你可以使用发布确认模式(Publisher Confirms)来确认消息是否已成功发送到Exchange。这可以通过在生产者端启用确认模式并监听确认回调来实现。如果消息成功投递到Exchange,RabbitMQ将发送一个确认回调(confirmCallback)。

2.2消息确认机制

RabbitMQ提供了消息确认机制(returnCallback),生产者可以等待来自RabbitMQ的确认消息,以确保消息已经成功发送到队列中。如果生产者没有收到确认消息,它可以选择重新发送消息。

2.3消息消费确认

消费者可以手动(关闭自动ack)发送确认消息(ack)给RabbitMQ来确认已成功处理消息。这样,RabbitMQ就知道可以安全地将消息标记为已传递,并从队列中删除它。如果消费者处理消息时发生错误,它可以选择拒绝消息(nack),这样消息将被重新放回队列中等待消费。

3.重试机制

如果消息在传输过程中出现异常,RabbitMQ会自动进行消息重试,直到消息被正确地处理为止。可以通过设置重试次数和重试时间间隔来控制消息重试的行为。但是要保证消息幂等性,一个消息只能被消费一次。

4.事务机制

RabbitMQ支持事务,你可以将多个发布操作包装在一个事务中。如果事务成功提交,所有的消息将被确认,否则它们将被回滚。然而,事务会降低吞吐量,性能下降250倍,因此只有在必要时才使用。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/805535
推荐阅读
相关标签
  

闽ICP备14008679号