本文介绍了如何检查通道是否仍在streadway/amqp RabbitMQ客户端中工作?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 github.com/streadway/amqp我的程序.在重新初始化之前,我应该如何确保我用于消费和/或生产的渠道仍在工作?

例如,在 ruby​​ 中,我可以简单地做:

bunny_client = Bunny.new({....})bunny_client.start

启动客户端,以及

如果不是 bunny_client 或 bunny_client.status != :connected# 重新初始化客户端

如何使用 streadway/amqp 客户端执行此操作?

解决方案

QueueDeclareQueueInspect 函数可以提供等效的功能.根据文档:

QueueInspect:>

使用此方法检查队列中有多少未确认的消息,有多少消费者正在接收交付,以及是否已存在同名队列.

如果这个名字的队列存在,使用Channel.QueueDeclare检查它是否用特定的参数声明.

如果这个名字的队列不存在,将返回错误并关闭通道.

QueueDeclare:>

QueueDeclare 声明了一个队列来保存消息并传递给消费者.如果队列不存在,则声明会创建一个队列,或者确保现有队列匹配相同的参数.

看起来这些文档中也有一些关于 Durable 队列(幸存的服务器重启)的好信息.

I'm using github.com/streadway/amqp for my program. How should I make sure that the channel I'm using for consumption and/or production is still working, before re-initializing it?

For example, in ruby, I could simply do:

bunny_client = Bunny.new({....})
bunny_client.start

to start the client, and

if not bunny_client or bunny_client.status != :connected
    # re-initialize the client

How to do this with streadway/amqp client?

解决方案

The QueueDeclare and QueueInspect functions may provide equivalent functionality. According to the docs:

QueueInspect:

QueueDeclare:

It looks like there's some good info regarding Durable queues (survive server restarts) in those docs as well.

这篇关于如何检查通道是否仍在streadway/amqp RabbitMQ客户端中工作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

06-06 07:13