首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在NSQ中确认消息

在NSQ中确认消息
EN

Stack Overflow用户
提问于 2022-04-08 23:19:28
回答 1查看 348关注 0票数 2

我是新来的NSQ,我想知道是否有可能承认一个消息被消耗(就像在谷歌PubSub)。我正在使用Golang,在浏览NSQ文档(https://github.com/nsqio/nsq/blob/v1.2.1/nsqd/channel.go#L350)时,我发现了方法FinishMessage,根据它的注释,它应该是successfully discards an in-flight message。这会被视为与公认的相同吗?如果一条信息在NSQ中没有被确认,它如何确保它一旦被消耗掉,就不会再次被消耗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2022-04-17 12:42:51

NSQ将消息发送到使用者后自动从队列中删除。如果在设置超时后没有来自使用者的响应,则自动重新队列消息。

是的,取决于您使用的是哪个编程语言客户机,您必须发送“finish”。这是Golang https://pkg.go.dev/github.com/nsqio/go-nsq#Finish的文档

但是,由于NSQ的设计方式,如果预期的操作没有成功,您必须重新排队从您的应用程序的消息。

这是他们网站的摘录

NSQ保证消息至少会被传递一次,尽管重复消息是可能的。消费者应该期待这一点,去欺骗或执行幂等运算.此保证是作为协议的一部分强制执行的,其工作方式如下(假设客户端已成功连接并订阅了主题):

timeout)

  • client
  1. 客户端表示它们已经准备好接收消息,
  2. NSQ发送消息,并在本地临时存储数据(如果出现重新队列或REQ回复FIN (finish)或REQ(重新队列)分别表示成功或失败)。如果客户端不回复NSQ,则在可配置的持续时间后将超时并自动重新队列消息)

您可以在这里阅读更多内容:https://nsq.io/overview/design.html

希望我的回答对你有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71804016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档