登录
首页 >  Golang >  Go问答

Golang:无需知道 RoutingKey 即可删除 AMQP 绑定

来源:stackoverflow

时间:2024-02-13 12:57:24 353浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《Golang:无需知道 RoutingKey 即可删除 AMQP 绑定》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

问题内容

我有一个应用程序,其中包含要为其创建绑定的“id”列表。例如:

输入:1,2,3,4 创建的绑定(从交换 foo 到队列 bar):

foo -> 1 -> bar
[..]
foo -> 4 -> bar

然后我从列表/输入中删除一个项目 (4) 并重新启动我的应用程序。 bar 队列是持久的(并且必须保持这种状态),现在我希望删除 4 的绑定。但是:我该怎么做?

有一个queueunbind方法(https://pkg.go.dev/github.com/rabbitmq/amqp091-go#channel.queueunbind),但这需要我知道routingkey(4)才能删除绑定。在这种情况下,我没有状态,所以我不知道哪些(如果有)项目消失了,因此不知道要删除哪些绑定。

我还可以删除 bar 队列,然后使用所有“当前”绑定重新创建它。但这可能会导致仍在该队列上的消息被销毁。我也无法删除其他人使用的 foo 交换。

不在我的服务中引入任何状态:如何删除不再需要的绑定?


正确答案


如果您知道所需的绑定,您可以执行以下操作:

  • 在启动时重建队列/队列订阅,这样您就可以确定一切都按照您想要的方式设置。这也意味着您将删除/重新创建绑定,因此您可能会错过一些消息。

更好的方法可能如下:

这样您的应用程序就不必存储带有绑定(即状态)的文件,并且当旧的/不需要的绑定出现时会自动更正。

您还可以拒绝任何具有您无法识别的路由键的消息,将它们发送到死信队列并添加一个处理程序,该处理程序将自动从那里删除绑定。这样您就不必修改 th 的“消费”部分中的绑定

以上就是《Golang:无需知道 RoutingKey 即可删除 AMQP 绑定》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>