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) —— 它可能只是保存到缓存中,而不是真正写入磁盘。持久性保证不强,但对于我们简单的任务队列来说已经足够了。如果您需要更强的保证,那么您可以使用发布者确认。
| 归档时间: |
|
| 查看次数: |
6048 次 |
| 最近记录: |