PHP Rabbitmq 报错Broken pipe

摘要:
根据调查,RabbitMQ服务器在短时间内向消费者发送大量消息。如果您没有时间确认,服务器将有大量未确认的消息,如果消费者不抓紧时间,它也将处于暂停动画或程序崩溃状态。

fwrite(): send of 13 bytes failed with errno=32 Broken pipe

fwrite(): send of 21 bytes failed with errno=104 Connection reset by peer

用 rabbitmq 做消息队列时报上面的错误,当消费队列一启动,Unacked 瞬间达到好几百。经查:RabbitMQ服务器在短时间内发送大量的消息给Consumer,如果你没有来得及Ack的话,那么服务端会积压大量的UnAcked消息,而Consumer如果来不急处理也会处于假死或程序崩溃。

后果就是Consmer崩溃后,UnAcked消息又ReQueue不断消耗MQ的资源

解决方案:

$connection = new AMQPStreamConnection(HOST, PORT, USER, PASS, VHOST);

$channel = $connection->channel();

$channel->queue_declare('qos_queue', false, true, false, false);

$channel->basic_qos(null, 10, null); //加上这个就好了 这个10 就是Unacked 里面的值,表示预先取出多少值来消费  prefetch_count

免责声明:文章转载自《PHP Rabbitmq 报错Broken pipe》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Swing UIlog4net日志的简单配置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WebSocket入门及使用指南

最近在一个项目中,需要使用到websocket,于是就花了一点时间来熟悉websocket并总结写篇blog。 为何使用websocket 在浏览器与服务器通信间,传统的 HTTP 请求在某些场景下并不理想,比如实时聊天、实时性的小游戏等等, 其面临主要两个缺点: 无法做到消息的「实时性」; 服务端无法主动推送信息; 其基于 HTTP 的主要解决方案...

Kafka消费者-从Kafka读取数据

(1)Customer和Customer Group (1)两种常用的消息模型 队列模型(queuing)和发布-订阅模型(publish-subscribe)。 队列的处理方式是一组消费者从服务器读取消息,一条消息只由其中的一个消费者来处理。 发布-订阅模型中,消息被广播给所有的消费者,接收到消息的消费者都可以处理此消息。 (2)Kafka的消费者和消...

Nodejs学习笔记(十六)—Pomelo介绍&入门

前言&介绍 Pomelo:一个快速、可扩展、Node.js分布式游戏服务器框架 从三四年前接触Node.js开始就接触到了Pomelo,从Pomelo最初的版本到现在,总的来说网易出品还算不错,但是发展不算快;用它做过一些项目和小游戏表现还不错。 用它的主要好处: 1.入门简单,有比较丰富的文档和示例(虽然现在看版本也比较老了,但是入门没什么问题)...

ansible debug模块学习笔记

ansible playbook可以将多个命令组合来执行,但是很多时候我们需要接收服务器的反馈,所以debug模块就非常重要了。 模块说明 调试模块,用于在调试中输出信息 常用参数:msg:调试输出的消息 var:将某个任务执行的输出作为变量传递给debug模块,debug会直接将其打印输出 verbosity:debug的级别(默认是0级,全部显示)...

【干货】Kafka 事务特性分析

特性背景 消息事务是指一系列的生产、消费操作可以要么都完成,要么都失败,类似数据库的事务。这个特性在0.10.2的版本是不支持的,从0.11版本开始才支持。华为云DMS率先提供Kafka 1.1.0的专享版服务,支持消息事务特性。       支持事务消息有什么作用?消息事务是实现分布式事务的一种方案,可以确保分布式场景下的数据最终一致性。例如最常用的转账...

微信公众平台开发(二):交互与接口

1、微信用户、微信服务器和后台服务器的交互 例:微信用户向公众号发送一条文本消息,这条消息会首先传给微信服务器,微信服务器处理这条信息并将其以xml数据格式传递给后台服务器,后台服务器接受到数据后会对数据进行处理,再响应数据以xml数据格式传递给微信服务器,微信服务器再响应到用户微信界面。 微信用户与微信后台服务器之间的交互过程就是数据传递过程,只不过需...