Vb.net 重新启动后清除rabbitmq队列
我已在windows server 2012 64位上安装了RabbitMQ 我测试了具有大量数据的发布和消费部件一切正常,我面临的唯一问题是在RabbitMQServer重新启动后队列中的消息丢失 我正在使用RabbitMQ的VB.NETSDK 我正在将Queue Declare的Vb.net 重新启动后清除rabbitmq队列,vb.net,rabbitmq,queue,restart,Vb.net,Rabbitmq,Queue,Restart,我已在windows server 2012 64位上安装了RabbitMQ 我测试了具有大量数据的发布和消费部件一切正常,我面临的唯一问题是在RabbitMQServer重新启动后队列中的消息丢失 我正在使用RabbitMQ的VB.NETSDK 我正在将Queue Declare的“持久”属性设置为true,将DeliveryMode basicqueproperties设置为“2”以使消息持久化。但在我的服务器重新启动后,消息仍然丢失 我如何克服这个问题? 在本页中,RabbitMQ上的消息
“持久”
属性设置为true,将DeliveryMode basicqueproperties设置为“2”
以使消息持久化。但在我的服务器重新启动后,消息仍然丢失
我如何克服这个问题?
在本页中,RabbitMQ上的消息持久性被解释为良好:
此时,我们可以确保任务队列不会丢失
如果RabbitMQ重新启动。现在我们需要将消息标记为持久消息-
通过将IBasicProperties.SetPersistent设置为true
关于消息持久性的说明
将消息标记为持久性并不能完全保证消息
不会迷路的。尽管它告诉RabbitMQ将消息保存到磁盘,
RabbitMQ接受一个
消息,但尚未保存。而且,RabbitMQ不执行fsync(2)
对于每一条消息,它可能只是保存到缓存中,而不是真的
写入磁盘。持久性保证不是很强,但是
对于我们的简单任务队列来说,这已经足够了。如果你需要
更强大的保证,然后您可以使用publisher确认
您是否正在声明您的队列
channel.QueueDeclare(“queue”,true,false,false,null)代码>即“独占”和“自动删除”设置为false?如果是,请尝试使用web控制台或感谢与我们共享此信息来检查您的队列属性+1.
var properties = channel.CreateBasicProperties();
properties.SetPersistent(true);