问题标签 [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 回答
394 浏览

ruby - 当其他消费者在 RabbitMQ 中可用时,消息堆叠在消费者身上 - 使用 bunny for rails

RabbitMQ 中的队列消息正在堆叠并等待单个消费者,而其他消费者可用。

我们使用 RabbitMQ 作为我们的信使服务。我们使用 bunny 创建连接并设置传递消息的队列。

在我们使用 bunny 的 rails 设置中,我们遇到了一个问题,即我们有一个队列,其中有 8 个消费者在该队列上侦听消息。当消息进来时,理想情况下,他们应该循环消费者,例如:队列中有 4 条消息,消费者 1 接收消息 1,-消费者 1 正忙,消费者 2 接收消息 2,消费者 2 正忙,消费者 3拿起消息 3,依此类推。

但是我们遇到的问题是,队列中有 4 条消息,消费者 1 拿起消息 1,消费者 1 忙,消费者 2-8 可用,但消息 2-4 堆叠在队列中等待消费者 1 可用并且处理消息。

我觉得我已经做了很多研究,只是无法弄清楚如何阻止消息堆积并等待单个消费者。

有没有人有这方面的经验,或者对如何解决这个问题有任何想法?

我们希望任何时候将任何消息发送到 RabbitMQ,消费者以先到先得的方式接收它们,而不是在其他消息可用时堆叠多条消息等待忙碌的消费者。

编辑:如何重现:同时启动 3 个消费者。推送 6 条消息 - 消费者 1 - 3 现在正忙于队列中的 3 条消息。重新启动 2 & 3,当 2 & 3 再次监听时,3 条消息仍在队列中等待消费者 1。消费者 2 和 3 仍然可用。

重新启动消费者 1,现在 3 个排队的消息首先到达新重新启动的消费者 2 和 3 的服务器。

无论消费者是否重新启动,我都需要消息先到先服务器。

0 投票
1 回答
121 浏览

ruby-on-rails - 继续通过发布者 RabbitMQ (ruby bunny) 发布数据

我有一个兔子使用 consumer.rb 和 publisher.rb 工作的 RabbitMQ。如果我跑

接着

我得到正在发布的数据(来自另一个类的数据)。当我运行 publisher.rb 时,数据在 ruby​​ consumer.rb 上打印如下:

我需要这两个脚本不断运行,以便发布者不断推送数据(@devise.value),我不断看到上述输出。我尝试使用 Daemon 创建一个新的服务器文件并运行 ruby​​ server.rb start。但这确实会继续运行 publisher.rb,但不会一直运行,因此它会发布数据。另外,如何使这个 RabbitMQ ruby​​ 应用程序将数据发布到另一个基于 Web 的 Rails 应用程序?

发布者.rb

需要“兔子”需要“守护进程”

BunnyPublisher 类

服务器.rb

谢谢

0 投票
1 回答
119 浏览

ruby - Ruby Bunny 交换 wait_for_confirm 或死亡

channel.waitForConfirmsOrDie()在使用 Bunny gem 进行发布确认的同时,合并类似于 RabbitMQ 方法的最佳方法是什么?

现在我正在使用:

但理想情况下,对于我需要的场景,我希望在等待确认时有更短的超时时间。现在,似乎有大约 15 秒的默认超时,但这对于阻塞线程来说太长了。如果我在三秒钟内没有收到确认,我希望发生的事情是引发异常/返回 false。

我在 RabbitMQ 文档中看到了一个waitForConfirmsOrDie(),但是 Bunny 没有这个方法可用。

我是否正在考虑为类似的功能重写一些方法。有没有人遇到过类似的事情并找到了实现这一点的好方法?

0 投票
1 回答
33 浏览

ruby-on-rails - 我们是否可以将运动鞋与 Web 服务器一起运行?

我可以使用 rake 运动鞋:完美运行。但是我可以在不运行单独命令的情况下与 Web 服务器一起运行运动鞋吗(rake 运动鞋:运行)

0 投票
0 回答
91 浏览

javascript - 在 nodejs 服务器中集成 Buuny.net API

嘿,有谁知道如何在 nodejs 服务器中使用 bunny.net 流 API。我想使用我的 nodejs 服务器将视频上传到 bunny.net,然后在我的服务器中使用 bunny.net 访问相同的视频。

0 投票
1 回答
81 浏览

ruby - RabbitMQ 流插件的 x-stream-offset 的正确日期格式是什么?

Bunny一直给我一个错误,我认为是从 RabbitMQ 发回的,以下字符串是无效的日期格式:

无效的:

  • ISO8601 时间戳字符串
  • 毫秒整数
  • YYYY-MM-DD 字符串
  • Unix 时间或纪元时间整数Time.now.to_i

有效的:

  • 整数(取回请求的消息和之后的所有内容)
  • first (string) (取回从 first 开始的所有消息)
  • 最后一个(字符串)
  • 下一个(字符串)

我收到一个错误,说它是无效的流偏移参数

下面是我正在运行它的 rake 任务的错误消息

--

下面是一个作为流连接到rabbitMQ的工作示例(没有二进制协议) -需要流插件

Java客户端示例显示它应该能够接受时间戳,但似乎我无法发送时间戳,是否有可接受的日期格式?

流功能的 Java 客户端文档说

时间戳 - 一个时间戳值,指定附加到日志的时间点。它将钳制到最接近的偏移量,如果时间戳超出流的范围,它将分别钳制日志的开始或结束。对于 AMQP 0.9.1,使用的时间戳是 POSIX 时间,精度为一秒,即自 1970 年 1 月 1 日 00:00:00 UTC 以来的秒数。

我找不到 POSIX 时间戳的示例