首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何访问在Bunny会话上打开的通道/队列?

如何访问在Bunny会话上打开的通道/队列?
EN

Stack Overflow用户
提问于 2016-07-06 17:45:07
回答 2查看 779关注 0票数 2

我正在使用Rabbit MQ的Ruby客户端(Bunny)。

我在一个初始化器中移动了hole Bunny配置和初始化过程。

如何从控制器或库内部访问在Bunny连接上打开的通道/队列?

当我调用Bunny::Session#open?时,我得到了'true‘,但我似乎找不出如何在该会话中访问所需的所有内容。

EN

回答 2

Stack Overflow用户

发布于 2017-01-13 13:06:00

Queues:如果你给队列一个名字,你可以任意调用同名的.queue,它永远不会创建超过一个队列,但是如果它由于任何原因消失了,它将重新创建队列。

代码语言:javascript
复制
 handle_to_my_queue = $rabbit_channel.queue(queue_name)

Channels:如果你创建了一个带有id的频道,那么你可以调用create_channel,它就像一个“查找或创建”。

对于通道,您通常只需要一个,所以我使用了一个全局变量(天哪,我知道!)

config/initializers/rabbit.rb

代码语言:javascript
复制
$rabbit_connection = Bunny.new
$rabbit_connection.start
$rabbit_channel = $rabbit_connection.create_channel
票数 3
EN

Stack Overflow用户

发布于 2017-02-01 19:54:30

正如Aaron Henderson所说,您只需要一个保存连接会话的全局变量。

您可以在创建队列时指定名称,可以使用相同的名称来访问它,可以使用id参数来访问通道。

使用主机、端口和凭证等选项初始化Bunny client:

代码语言:javascript
复制
$rmq_session = Bunny.new(
                          host: host,
                          port: port,
                          username: username,
                          password: password
                        )
$rmq_session.start

使用bunny会话创建一个通道。

代码语言:javascript
复制
sample_channel = $rmq_session.create_channel

可以通过id参数访问相同的通道。

代码语言:javascript
复制
$rmq_session.channel(sample_channel.id)

通道由它们的ids标识,ids是整数。当通道打开和关闭时,Bunny负责分配和释放它们。几乎不需要显式地指定通道ids。每个连接的最大通道数有限制,通常为65536。请注意,在客户端和服务器上分配通道都非常便宜,因此拥有数十个、数百个甚至数千个通道不是问题Read more about channel here

创建一个包含bunny会话的队列。

代码语言:javascript
复制
  sample_queue = sample_channel.queue('sample.queue')

您可以通过引用队列名称来访问上面创建的队列。如果已经存在一个队列,则不会创建新的队列。

代码语言:javascript
复制
  sample_queue = sample_channel.queue('sample.queue')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38220959

复制
相关文章

相似问题

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