我在可靠性模式中使用AMQP,我的用例是将消息放入队列中,然后消费它们并将信息插入web服务中。我的web服务很慢,我的队列可能有很多很多消息,我希望确保消费者不会杀死我的数据库。
在RabbitMQ中是否有一种内建的方式来执行节流,或者是基于时间的(每分钟/秒/小时仅有X条消息),或者是某种其他机制?
有每个连接流控制,所以如果服务器上有太多消息,发布服务器将等待。RabbitMQ是一个非常可靠的系统,我可以说你不用担心它。
如果你说的是如何限制消费,大概你得自己去管了。您还可以查看
channel.flow
(从RabbitMQ 3.3.0起不推荐使用)和basic.qos方法,或者您甚至可以暂时断开使用者的连接,并在您的服务能够承担负载时重新连接它们。
UPD,我可以建议您使用basic.consumer使用消息,并将其提供给您的web服务。根据web服务进程有效负载的时间,您可能会猜测它的负载,并执行某种sleep(N)
。当您的消费者处于睡眠状态时,它不会消耗任何东西,因此不会提供任何web服务。
我正在使用RabbitMQ和Spring amqp,我希望它们不会丢失消息。通过对重试使用指数回退策略,我可能会阻止我的消费者,因为他们可能正在处理他们可以处理的消息。我想给失败的消息几天时间重试指数回退策略,但我不想让使用者阻塞几天,我想让它继续对其他消息工作。 我知道我们可以通过ActiveMQ(在将来的某个时刻重试消息(ActiveMQ))实现这种功能,但无法为RabbitMQ找到类似的解决
介绍 支持在 imi 框架中使用 支持 AMQP 协议的消息队列,如:RabbitMQ 支持消息发布和消费 Github: https://github.com/imiphp/imi-amqp Composer 本项目可以使用composer安装,遵循psr-4自动加载规则,在你的 composer.json 中加入下面的内容: { "require": { "imiphp
我想使用rabbitMq队列中Storm喷口中的消息。 现在,我们使用Spring AMQP异步发送和接收来自RabbitMq的消息。 Spring AMQP提供了从队列读取消息的机制(创建监听器或使用注释@RabbitListner)。 问题是我可以让一个侦听器从队列中读取消息。但是,我如何将此消息发送到Storm群上运行的Storm喷口? 拓扑将启动一个集群,但在我的spout的nextTup
我使用Laravel包https://github.com/bschmitt/laravel-amqp/在基于微服务的应用程序中使用RabbitMQ发布和使用消息。我在服务中发布消息,并试图在另一个服务中使用相同的消息。 留档在使用队列中已发布消息的代码上非常清楚。然而,在传统的Laravel队列过程中,我们将描述要在句柄()方法中执行的过程。并调用php artisan队列: work命令来执行
RabbitMQ使用AMQP协议(而是实现AMQP协议) Java客户端需要使用AMQP协议客户端库来连接/使用RabbitMQ JMS API在这里的作用是什么?JMS API应使用AMQP客户端库连接到RabbitMQ? 通常我们使用JMS来连接RabbitMQ、ActiveMQ等消息代理。那么这里使用的默认协议是什么,而不是AMQP? 上面的一些可能是哑巴。:-)但我想把头缠在上面。
我们使用RabbitMQ作为消息代理。生产者1使用AMQP连接,生产者2使用STOMP协议连接,消费者1使用AMQP连接,消费者2(使用javascript)通过网络插座使用STOMP连接。 (生产者1和消费者1使用Spring云流) 测试1:当使用AMQP的producer1发送消息时,它在消费者1(AMQP)中被接收,而在消费者2(STOMP)中接收失败。当producer1(AMQP)发送消