问题标签 [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.
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 的服务器。
无论消费者是否重新启动,我都需要消息先到先服务器。
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
谢谢
ruby - Ruby Bunny 交换 wait_for_confirm 或死亡
channel.waitForConfirmsOrDie()
在使用 Bunny gem 进行发布确认的同时,合并类似于 RabbitMQ 方法的最佳方法是什么?
现在我正在使用:
但理想情况下,对于我需要的场景,我希望在等待确认时有更短的超时时间。现在,似乎有大约 15 秒的默认超时,但这对于阻塞线程来说太长了。如果我在三秒钟内没有收到确认,我希望发生的事情是引发异常/返回 false。
我在 RabbitMQ 文档中看到了一个waitForConfirmsOrDie()
,但是 Bunny 没有这个方法可用。
我是否正在考虑为类似的功能重写一些方法。有没有人遇到过类似的事情并找到了实现这一点的好方法?
ruby-on-rails - 我们是否可以将运动鞋与 Web 服务器一起运行?
我可以使用 rake 运动鞋:完美运行。但是我可以在不运行单独命令的情况下与 Web 服务器一起运行运动鞋吗(rake 运动鞋:运行)
javascript - 在 nodejs 服务器中集成 Buuny.net API
嘿,有谁知道如何在 nodejs 服务器中使用 bunny.net 流 API。我想使用我的 nodejs 服务器将视频上传到 bunny.net,然后在我的服务器中使用 bunny.net 访问相同的视频。
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 时间戳的示例