问题标签 [bunny]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
595 浏览

ruby-on-rails - RabbitMQ 生成大量队列,这些队列永远存在

对于解决我的问题的一些帮助,我将不胜感激。

我正在使用 Rabbitmq,并且有很多生成的队列(名称如 amq.gen-pMJVWygd3iLb_buXp1oUyw),它们是持久的并且永远离开。

这样的队列有交换core.timeout的问题,但也有应该处理core.timeout的队列。

所以我被困在这一刻,找不到这个队列的生成位置。

0 投票
1 回答
451 浏览

rabbitmq - 等待 RabbitMQ 强制发布?

将 RabbitMQ 与 Bunny (Ruby) 一起使用,如果没有从 fanout 交换消耗的队列,我想发布并希望避免丢失消息。从我图书馆的角度来看,我愿意等待返回,如果消息已发送,我会向客户给出明确的答复。睡觉是实现这一目标的唯一方法吗?

0 投票
2 回答
990 浏览

ruby-on-rails - 如何将参数从 yaml 文件传递​​给构造函数,而不明确提及每个参数?

我有这个初始化脚本,用于使用 Bunny 设置我的 RabbitMq 连接:

的内容config[Rails.env]是:

Bunny.new命令的详细语法可以正常工作。但是,当我注释掉详细块并保留以下语法时:

我收到以下错误消息:

我期待它能够工作,因为这两种情况下的键都是相同的。有没有办法在不明确指定每个参数的情况下调用构造函数?

我试图"<<"=>nil从 yaml 文件中删除该行,但行为没有改变。

0 投票
0 回答
711 浏览

ruby - 为什么bunny在ruby中生成并发布到rabbitmq的大消息被编码为base64

我正在使用 bunny gem 将消息(json 字符串)发布到 rabbitmq 服务器。代码如下:

但是,我从 rabbitmq 服务器得到的只是杂乱无章的字符串,由base64. 我发布的消息(代码中的值)大于 90000 大小。我通过将所有字符串复制到编码工具中并通过 解码混乱的字符串来解决这个问题base64,这只是我发送的数据,但只是其中的一部分。看起来发布的数据被截断了,没有括号、逗号或一些键/值。

所以,这是我的问题,我知道不建议将大量消息发布到rabbitmq,但是数据是如何编码成base64的以及为什么它们被截断。

有任何想法吗?谢谢。

0 投票
1 回答
1178 浏览

multithreading - Sidekiq线程的单例可能吗?

所以我需要能够为每个 Sidekiq 线程创建一个 RabbitMQ 连接和通道,因为如果我不这样做,我会用完 RabbitMQ 连接,因为文档建议这样做。文档展示了如何使用Unicorn进行操作:

是否可以为 Sidekiq 线程做类似的事情?有什么我可以做的Sidekiq.server_configure吗?看起来是 Sidekiq 启动线程的地方,但我无论如何都看不到要挂接到启动/停止?

0 投票
1 回答
3480 浏览

rabbitmq - Routing messages in RabbitMQ topic exchange that do NOT match a pattern

Two queues are bound to a topic exchange with the following routing keys:

Queue A, bound with routing key pattern match *.foo
Queue B, bound with routing key pattern match *.bar

I'd like to add a third queue to this exchange that receives messages that are neither foo messages nor bar messages. If I bind this queue with a # routing key, I naturally get all messages I need, but including foo's and bar's which I don't want.

Any way to route messages patching a pattern NOT *.foo AND NOT *.bar ?

0 投票
1 回答
224 浏览

ruby-on-rails - 在 ROR 中通过 Bunny 管理 TCP 连接

我们正朝着在 AWS 中创建消息队列系统的方向前进。我们的微服务将通过 Bunny 与 Rabbit MQ 进行通信。我可以连接并发布到交易所,但 tcp 连接在一定时间后断开(我猜是 20 秒)。Bunny 尝试重新连接,它确实重新连接成功。

我的问题是根据 rabbit mq doco,我们应该在 tcp 连接上使用通道,而不是每次都打开一个新的 tcp。在 ROR 中管理一个 tcp 连接的最佳方法是什么?我应该为每个请求创建一个 TCP 吗?

0 投票
0 回答
206 浏览

ruby - 在乘客请求中捕获 RabbitMQ 连接丢失

我正在使用兔子 gem 将消息发布到 RabbitMQ。

按照官方文档中给出的与 Passenger in Rack 应用程序一起使用的建议,我添加了要在新的工作进程启动后执行的连接创建。

这工作得很好,但是当连接在请求中丢失时(在消息可以发布之前),不会捕获到异常。该过程似乎死了并返回了通用的 apache 错误页面 - 日志记录也不再起作用。

因此,在我的特定情况下,创建了一个数据库条目,但我无法清楚地写出一条日志消息,指示该日志消息以及无法发布的消息。

我发现的一种解决方法是通过在实际发布消息之前直接建立连接,在每个请求的基础上创建到 rabbitmq 的连接。不过,这似乎不是很有效,因为乘客工作进程在被丢弃之前会处理多个请求。然而,它确实正确地捕获了异常,记录它并继续处理请求

现在我想知道在遵循推荐的方法时如何捕捉到这一点,以及是否还有其他我尚未找到的带有乘客的机架应用程序的最佳实践。我很感激任何提示让我找到比我的解决方法更好的解决方案。

0 投票
1 回答
603 浏览

bunny - 如何使用 Bunny gem 将消息优先发布到 RabbitMQ

RabbitMQ 提供了一个Priority Queue,其中消息可能具有优先级并以相反的优先级传递给消费者。

使用Bunny gem,我创建了一个优先队列。然后,我发布了 5 条没有优先级的消息,以及 2 条优先级为 1 的消息,并检查了我的消费者日志。不幸的是,我的消费者告诉我它处理 5 条无优先级消息,然后处理 2 条优先级消息。通过添加睡眠,我确保每条消息至少需要 2 秒的时间来处理。我频道的预取也设置为 1。这是我使用的示例代码

我希望看到第一个低优先级消息,然后是 2 个高优先级消息,然后是剩下的低优先级消息。

似乎忽略了priority选项。#publish我究竟做错了什么?

0 投票
0 回答
106 浏览

ruby-on-rails - 我可以把这个 rabbitmq 消费者代码放在哪里?

我有一个使用兔子的rabbitmq消费者的代码,它应该监听发布到rabbitmq队列的消息,并在消息被消费时在视图上显示一个flash通知。消费者在与生产者不同的会话中运行,尽管它们在同一个应用程序中。该应用程序使用直接交换,它使用消息接收者的电子邮件作为 routing_key。我希望在routing_key发布与 current_user 的电子邮件类似的消息时,会为该用户显示一条闪烁消息,指示他有一条新消息而无需刷新页面。我想要类似于 Facebook 通知的行为。

生产者代码如下所示:

消费者代码:看起来像这样:

问题是我不知道将消费者代码放在哪里。我曾尝试将代码作为方法放在应用程序控制器中,但这似乎不起作用。任何关于如何更好地做到这一点的建议都非常感谢。