栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

RabbitMQ:消息保持“未确认”

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

RabbitMQ:消息保持“未确认”

一条未确认的消息表示您的使用者已经读取了该消息,但是该使用者从未将ACK发送回RabbitMQ代理以表示它已完成处理。

我不太熟悉Spring
framework插件,但是(对于您的使用者)您将在某个地方声明队列,它可能看起来像这样(摘自http://www.rabbitmq.com/tutorials/tutorial-
two -java.html
):

channel.queueDeclare(queueName, ....)

然后您将设置您的消费者

bool ackMode = false;QueueingConsumer consumer = new QueueingConsumer(channel);channel.basicConsume(queueName, ackMode, consumer);

上面的ackMode是一个布尔值,通过将其设置为false,我们明确地向RabbitMQ表示我的使用者将确认收到的每个消息。如果将此标志设置为true,那么您将不会在RabbitMQ中看到未确认的计数,而是一旦使用者读取了该消息(即,该消息已传递给使用者,它将从队列中删除)。

要确认一条消息,您可以执行以下操作:

QueueingConsumer.Delivery delivery = consumer.nextDelivery();//...do something with the message...channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false); //the false flag is to do with multiple message acknowledgement

如果您可以发布一些消费者代码,那么我也许可以提供进一步的帮助…但是与此同时,请专门查看BlockingQueueConsumer:该构造函数将使您看到可以设置AcknowledgeMode并查看nextMessage()将返回一个Message对象,其中包含一个名为getDeliveryTag()的方法,该方法将返回Long,这是您将在basicAck上发送回的ID



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/391346.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号