重启后,rabbitmq队列清除

时间:2015-04-08 16:35:28

标签: vb.net queue rabbitmq clear restart

我在Windows Server 2012 64位上安装了 RabbitMQ

我测试了发布和使用大量数据的部件一切都很好,我面临的唯一问题是RabbitMQServer重启后队列中的消息会丢失。

我正在使用RabbitMQ的VB.Net SDK。

我将Queue Declare的"Durable"属性设置为true,将DeliveryMode BasicQueueProperties to "2"设置为使Message持久化。但是在服务器重启后,消息仍然丢失了。

我怎样才能克服这个?

1 个答案:

答案 0 :(得分:4)

https://www.rabbitmq.com/tutorials/tutorial-two-dotnet.html

在这个页面上,RabbitMQ上的消息持久性表现良好:

  

此时我们确定task_queue队列甚至不会丢失   如果RabbitMQ重新启动。现在我们需要将我们的消息标记为持久性 -   通过将IBasicProperties.SetPersistent设置为true。

var properties = channel.CreateBasicProperties();
properties.SetPersistent(true);

关于消息持久性的注释

  

将消息标记为持久性并不能完全保证消息   不会迷路。虽然它告诉RabbitMQ将消息保存到磁盘,   RabbitMQ接受了一个短暂的时间窗口   消息并没有保存它。另外,RabbitMQ不做fsync(2)   对于每条消息 - 它可能只是保存到缓存而不是真的   写入磁盘。持久性保证并不强大,但是   它对我们简单的任务队列来说已经绰绰有余了。如果你需要一个   更强的保证然后您可以使用发布者确认。