问题标签 [amqp]

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 投票
2 回答
2446 浏览

python - 在 Django 中将消息队列消费者放在哪里?

我在 Django 项目中将 Carrot 用于消息队列并按照教程进行操作,并且效果很好。但是该示例在控制台中运行,我想知道如何在 Django 中应用它。我从models.py 中的一个模型调用的发布者类,所以没关系。但我不知道把消费类放在哪里。

由于它只是与 .wait() 一起坐在那里,我不知道在什么时候或在哪里需要实例化它,以便它始终运行并侦听消息!

谢谢!

0 投票
1 回答
8644 浏览

message-queue - 在 FIFO 排队系统中,实现优先级消息传递的最佳方式是什么

对于不始终支持优先级消息的面向消息的中间件(例如 AMQP),当队列只有 FIFO 语义时,实现优先级消费的最佳方式是什么?一般用例是这样一个系统,当队列中存在大量消息积压时,消费者在接收优先级较低的消息之前接收优先级较高的消息。

0 投票
1 回答
3661 浏览

process - AMQP 延迟传递和防止重复消息

我有一个系统会偶尔生成消息,我想每 5 分钟只提交零或一条消息。如果没有生成消息,则队列使用者不会处理任何内容。如果在 5 分钟内生成了 100 条相同的消息,我只希望从队列中使用其中的一条。

我正在使用 AMQP(RabbitMQ),有没有办法在 rabbitmq 或 AMQP 协议中实现这一点?我可以检查队列的内容以确保不插入重复项吗?队列检查似乎是一个坏主意,通常不应该为消息传递系统做些什么。

如果没有队列检查,这可以用这些工具来完成吗?想到的唯一解决方案是使用第二个队列接收所有消息,然后消费者读取每条消息并将其放入内部队列中,等待 5 分钟,然后丢弃收到的任何重复消息。在延迟之后,单条消息被放到“真正的”队列中进行处理。

看起来这可能是队列系统可以处理的常见情况。有任何想法吗?

0 投票
3 回答
12792 浏览

python - 如何在 RabbitMQ 服务器上设置超时检测?

我正在使用这个python 绑定来尝试RabbitMQ 。

我注意到的一件事是,如果我不干净地杀死了一个消费者(模拟一个崩溃的程序),服务器会认为这个消费者仍然存在很长时间。这样做的结果是所有其他消息都将被忽略。

例如,如果您杀死消费者 1 次并重新连接,则将忽略 1/2 条消息。如果你杀死另一个消费者,那么 2/3 的消息将被忽略。如果您杀死 3rd,则 3/4 消息将被忽略,依此类推。

我试过打开确认,但它似乎没有帮助。我找到的唯一解决方案是手动停止服务器并重置它。

有没有更好的办法?

如何重新创建此场景

  • 运行rabbitmq。

  • 取消归档此库

  • 在此处下载消费者和发布者。运行 amqp_consumer.py 两次。运行 amqp_publisher.py,输入一些数据并观察它是否按预期工作。消息以循环方式接收。

  • 使用 kill -9 或任务管理器终止其中一个消费者进程。

  • 现在,当您发布消息时,将丢失 50% 的消息。

0 投票
4 回答
1341 浏览

php - PHP 应用程序的异步/企业消息传递

哪种消息传递平台是 PHP 和 Java 应用程序之间异步消息队列(发布、消费)的最佳选择?我看过 RabbitMQ、ActiveMQ、OpenAMQ、Tibco Rendezvous 和 Websphere MQ。需要坚持。我喜欢 AMQP 的想法并使用开放协议,但我听说过 RabbitMQ 的稳定性问题,这似乎是领先的 AMQP 实现。

消息负载不会达到“Twitter 风格”的规模,但会相当大并且需要非常高的可用性。

官方支持的 PHP API 肯定会获得积分。Java 和 PHP 系统都将积极生产和消费。

0 投票
6 回答
5895 浏览

activemq - 商业消息中间件与开源的优势

我一直在评估几种开源消息队列技术,例如 RabbitMQ、ActiveMQ、OpenAMQ 等。我的问题是,使用 Tibco EMS、WebSphereMQ、Sonic 等商业技术而不是 Active 之类的技术可以获得什么好处还是兔子?PHP 将是主要涉及的语言,尽管 Java 系统也会进行交互。

0 投票
2 回答
10288 浏览

rabbitmq - AMQP中每个队列的唯一消息?

这与其他问题类似,但有一点不同:我在规范中读到 AMQP 消息的 message-id 应该由应用程序本身设置,所以理论上我可以使用它来保证一定程度的唯一性, 正确的?

我现在的主要问题是:该 message-id 在什么范围内保证是唯一的?对于当前在特定队列中排队的消息?在所有队列中?超越宇宙?:-)

这种行为是否标准化?我计划在这里使用 RabbitMQ,但是如果有一些不是供应商特定的东西会很好:-)

谢谢。

0 投票
1 回答
208 浏览

client-server - 我可以使用高级消息队列协议 (AMQP) 吗?

我们开发具有客户端-服务器架构的系统。但在我们的例子中,客户端必须以离线文件模式与服务器通信。在这种情况下使用 AMQP 是否正确?

0 投票
1 回答
3130 浏览

python - 如何使用 py-amqplib 在多个队列上等待消息

我正在使用py-amqplib在 Python 中访问 RabbitMQ。应用程序会不时收到监听某些 MQ 主题的请求。

第一次收到这样的请求时,它会创建一个 AMQP 连接和一个通道,并启动一个新线程来监听消息:

AMQPListener非常简单:

创建连接后,它订阅感兴趣的主题,如下所示:

第一次这一切都很好。但是,它在后续请求订阅另一个主题时失败。在后续请求中,我重新使用 AMQP 连接和 AMQPListener 线程(因为我不想为每个主题启动一个新线程)并且当我调用上面的代码块时,channel.queue_declare()方法调用永远不会返回。我还尝试在那时创建一个新频道,并且connection.channel()调用也永远不会返回。

我能够让它工作的唯一方法是为每个主题(即routing_key)创建一个新的连接、通道和侦听器线程,但这真的不理想。我怀疑是 wait() 方法以某种方式阻塞了整个连接,但我不确定该怎么做。当然,我应该能够使用单个侦听器线程接收具有多个路由键(甚至在多个通道上)的消息?

一个相关的问题是:当该主题不再感兴趣时,我如何停止侦听器线程?如果没有消息,channel.wait() 调用似乎会永远阻塞我能想到的唯一方法是向队列发送一条“毒化”它的虚拟消息,即。被听者解释为停止的信号。

0 投票
2 回答
1558 浏览

excel - 如何在 Excel 中进行分布式计算

几年前,我实现了一个异步点对点面向消息的中间件,该中间件在 Excel VBA 中使用起来非常友好,我发现自己再次需要进行大量计算,这些计算可能很容易分发,如果我有机制。

我可以重新实现 MOM 层,但如果存在第三方产品,我更愿意使用它。

我的要求是这些:

  • 能够从 Excel VBA 和 VB6 轻松发送消息,
  • 具有资源发现机制来查找计算服务,
  • 发送异步消息(我不想在计算完成时锁定 Excel),
  • 提供排队机制,以便我可以让多台服务器轻松完成工作,
  • 设置管理员权限低

任何人都可以提出任何建议吗?

很多谢谢

-- DM