重启后rabbitmq队列清除

mad*_*dhu 8 vb.net queue restart rabbitmq

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

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

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

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

我怎样才能克服这个问题?

efa*_*ruk 10

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

在此页面中RabbitMQ上的消息持久性被很好地说明:

此时我们确信即使RabbitMQ重启,task_queue队列也不会丢失。现在我们需要将我们的消息标记为持久性 - 通过将 IBasicProperties.SetPersistent 设置为 true。

var properties = channel.CreateBasicProperties();
properties.SetPersistent(true);
Run Code Online (Sandbox Code Playgroud)

消息持久化注意事项

将消息标记为持久化并不能完全保证消息不会丢失。虽然它告诉 RabbitMQ 将消息保存到磁盘,但是当 RabbitMQ 已经接受一条消息并且还没有保存它时,仍然有很短的时间窗口。此外,RabbitMQ 不会对每条消息都执行 fsync(2) —— 它可能只是保存到缓存中,而不是真正写入磁盘。持久性保证不强,但对于我们简单的任务队列来说已经足够了。如果您需要更强的保证,那么您可以使用发布者确认。