RabbitMQ

我们生活在一个实时信息持续可用的世界当中。我们编写的应用程序需要以简单的方式可靠且迅速地路由给众多接受者。更为重要的是,我们需要找到改变信息接收者的方式,而无须频繁地重写它们。应用程序经常会沦为孤岛,新的程序如果不将原始信息的生产者重写(或则推倒重来)的话就无法对其进行访问。你也许会自言自语:“好吧,不过消息队列或则RabbitMQ如何帮助我来解决这些问题呢?”

消息队列(message queuing)使用消息将应用程序连接起来。这些消息通过像RabbitMQ这样的消息代理服务器在应用程序之间路由。这就像是在应用程序之间防止一个邮局。实现的情况是,这个解决方法并不针对的是金融行业实时通信问题,它同时也解决了我们开发人员每天要面对的问题。当我们需要扩大应用程序规模的时候,我们搞不清楚什么是“企业消息通信”。我们和你一样只是开发人员,想要解决这个问题就是处理庞大的实时消息,并把它们快速路由到众多的消费者。我们要在不阻塞消息生产者的情况下做到这一点,同时也无须让生产者知道最终消费者是谁。RabbitMQ帮助我们轻松解决这些常见问题,并用一种基于标准的方法来确保应用程序之间的相互通信。

Unexpected connection close detected: StreamLostError

2021年02月02日

最近使用RabbitMQ消息队列,但是消费者有的时候需要很长时间运行,结果会报如下错误:ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。01-23 09:35 pika.adapters.base_connection ERROR connection_lost: StreamLostError: ("Stream connec...

pika.adapters.blocking_connection StreamLostError: ("Stream connection lost: ConnectionResetError(10054

2021年01月23日

最近在使用RabbitMQ的时候,出现了连接丢失的情况:ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。01-23 09:35 pika.adapters.base_connection ERROR connection_lost: StreamLostError: ("Stream connection lost: Conne...

pika basic.qos(prefetch_count)理解

2021年01月23日

消费者在开启acknowledge的情况下,对接收到的消息可以根据业务的需要异步对消息进行确认。然而在实际使用过程中,由于消费者自身处理能力有限,从rabbitmq获取一定数量的消息后,希望rabbitmq不再将队列中的消息推送过来,当对消息处理完后(即对消息进行了ack,并且有能力处理更多的消息)再接收来自队列的消息。在这种场景下,我们可以通过设置basic.qos信令中的prefetch_co...

pika heartbeat 理解

2021年01月23日

RabbitMQ heartbeat通常用来检测通信的对端是否存活(未正常关闭socket连接而异常crash)。其基本原理是检测对应的socket连接上数据的收发是否正常,如果一段时间内没有收发数据,则向对端发送一个心跳检测包,如果一段时间内没有回应则认为心跳超时,即认为对端可能异常crash了。RabbitMQ也不例外,heatbeat在客户端和服务端之间用于检测对端是否正常,即客户端与服务端...

pika.exceptions.ProbableAccessDeniedError

2020年01月07日

再试用pika的时候报如下错误:pika.exceptions.ProbableAccessDeniedError: ConnectionClosedByBroker: (530) "NOT_ALLOWED - access to vhost 'C_Critical' refused for user 'Se'"出现问题的原因:vhost与用户名认证失败,检查代码,看看用户名和密码是否正确。请检查...

TypeError: basic_consume() got multiple values for argument 'queue'

2020年01月07日

最近在使用RabbitMQ的时候出现了如下错误:TypeError: basic_consume() got multiple values for argument 'queue'具体代码如下:channel.basic_consume(rate_limit_notify, queue='rate_limit', auto_ack=False, consumer_tag='rate_limit'...

RabbitMQ的一些操作记录

2020年01月07日

再Ubuntu 18.04上操作RabbitMQ的一些记录。新建vhost# 切换目录 cd /usr/sbin/ sudo ./rabbitmqctl add_vhost vhost_name完成了新建vhost的任务。删除vhostsudo ./rabbitmqctl delete_vhost vhost_name新建用户sudo ./rabbitmqctl add_user c_use...

unable to connect to node 'rabbit@ip-172-31-21-62': nodedown

2019年12月16日

在查看RabbitMQ状态的时候:cd /usr/sbin/ sudo ./rabbitmqctl status如果由于某些原因导致RabbitMQ服务不可用,出现如下问题:Status of node 'rabbit@ip-172-31-21-62' ... Error: unable to connect to node 'rabbit@ip-172-31-21-62': nodedown...