Rabbitmq 如何找回被消费掉的数据

使用下面的命令启动的 rabbitmq

docker run -d  -p 15672:15672 -p 5672:5672 rabbitmq:3-management

我现在有一批数据库被消费了,事后我发现现在不应该被消费的,我想重新恢复现场,请问 rabbitmq 可以做到吗?

  • rabbitmq 什么时候会删除掉已经被消费的数据?
  • rabbitmq 可以复原被消费掉的数据吗?

我并不知道 rabbitmq 有没有持久化什么的,因为一切都是上面那个 docker 命令干的,我也不知道他开启了什么,关闭了什么

阅读 3.6k
1 个回答

在RabbitMQ中可以使用Firehose功能来实现消息追踪,Firehose可以记录每一次发送或者消费消息的记录,方便使用RabbitMQ的使用者进行调试、排错等。

Firehose的机制是将生产者投递给RabbitMQ的消息,或者是RabbitMQ投递给消费者的消息按照指定的格式发送到默认的交换器上。这个默认的交换器的名称为amq.rabbitmq.trace,它是一个topic类型的交换器。发送到这个交换器上的消息的routingKey为publish.exchangename和deliver.queuename。其中exchangename和queuename为实际的交换器和队列的名称,分别对应生产者投递到交换器的消息和消费者从队列中获取的消息。

开启Firehose命令:

rabbitmqctl trace_on [-p vhost] 

其中[-p vhost]是可选参数,用来指定vhost。
对应的关闭命令为:

rabbitmqctl trace_off [-p vhost]

注意Firehose默认情况处于关闭状态,并且Firehose的状态也是非持久化的,会在RabbitMQ服务重启的时候还原成默认的状态。Firehose开启之后多少会影响服务的性能,因为它会引起额外的消息生成、路由和存储。

参考来源: https://blog.csdn.net/u013256...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进