- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 PHP 脚本中的消费者 worker 。
但有时 RabbitMQ 服务器会停止运行,
我收到此错误:
PHP Fatal error: Uncaught exception 'ErrorException' with message 'fwrite(): send of 19 bytes failed with errno=32 Broken pipe' in /home/user/pusher/rabbitmq-worker/vendor/php-amqplib/php-amqplib/PhpAmqpLib/Wire/IO/StreamIO.php:281
我希望能够使用 try/catch block 来处理此错误,以便向我的控制台抛出一个不错的错误,或者尝试在一段时间后重新连接。
这是我到目前为止的代码:
while (true) {
try {
$connection = new AMQPStreamConnection(RABBITMQ_HOST, RABBITMQ_PORT, RABBITMQ_USER, RABBITMQ_PASS);
$channel = $connection->channel();
$channel->queue_declare(RABBITMQ_DT_QUEUE, false, true, false, false);
$channel->basic_qos(null, 11, null);
echo ' [*] Waiting for messages. To exit press CTRL+C', "\n";
$callback = function($req) {
sleep(3);//Some task that takes 3 sec
};
$channel->basic_consume(RABBITMQ_QUEUE, '', false, false, false, false, $callback);
while (count($channel->callbacks)) {
$channel->wait();
}
$channel->close();
$connection->close();
} catch (Exception $e) {
sleep(1);
}
缺少什么?
最佳答案
定义连接的下一个参数
keepalive: true
heartbeat: 15 // An example
这是AMQPStreamConnection::__constructor()的两个最新参数
注意:如果您连接到某个远程服务器,我建议设置较高的超时
connection_timeout: 10
read_write_timeout: 30
更新:您可以捕获 ErrorException
并尝试再次连接到服务器
关于php - RabbitMQ 和 php-amqplib : cunsumer reconnect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39721015/
当我尝试连接到已关闭的主机时,我收到以下消息: cd `sftp://example.com/tmp' [Delaying before reconnect: 30] 每次尝试后,延迟都会增加。我发现
最近我注意到 mysql 连接超时,增加 wait_timeout 对此有所帮助。然而这种情况仍然发生。 我们还启用了 mysqli.reconnect 来 try catch 问题并允许脚本继续运行
我正在编写一个应用程序,它使用 TIdTCPClient 通过套接字与另一个应用程序进行通信。 我希望应用程序尝试连接到某个服务器,直到建立连接(即直到服务器上线)。 为了做到这一点,我编写了以下代码
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
为了解释,我将代码分为几个子部分:(相同范围) 在第 1、2 和 3 部分,任何连接数据库的尝试都会成功。值得一提的是,每个 mysql_close() 都会立即由退出继续。 在第 4 部分,尝试连
如何防止通过重新连接切换连接编码?我的所有设置都是 utf-8,但是因为我在 cli 的 php.ini 中启用了这个功能......我已经测试了任何东西......当我有一个长时间工作的脚本时,然后
Mongoose 'reconnected' 事件在 'close' 事件第二次被触发后不会触发。如何增加始终重试的时间? close:在我们断开连接并在所有这些连接模型上执行 onClose(之后,
我是这方面的新手,我在 Azure ML 工作区中遇到了一些问题。我从终端运行了 python 代码,然后打开另一个终端来检查进程。我在检查进程的终端中收到以下消息: 这是什么意思?它一直在运行,但我
我在 node.js (Express) 应用程序中使用 Javascript SDK。 连接用户工作正常,但连接不会在页面重新加载之间持续存在。这是默认行为,还是用户应该在新请求中保持联系? 我是否
我在 node.js (Express) 应用程序中使用 Javascript SDK。 连接用户工作正常,但连接不会在页面重新加载之间持续存在。这是默认行为,还是用户应该在新请求中保持联系? 我是否
如果我先启动服务器,然后启动客户端,一切都会正常,但是当我先启动客户端,然后启动服务器时(确保客户端能够在 svr 崩溃时连接,然后再次上线),客户端确实连接到服务器,但 2.3 秒后它抛出 Sock
如果连接丢失,如何设置 asterisk 服务器重新连接到远程 MySQL 服务器?带有 odbc 支持的 Asterisk 1.8.32.3 最佳答案 Asterisk 有 cdr 和实时连接。两者
我是 iOS 新手,刚开始使用它。我正在尝试实现网络可达性以检测网络何时断开连接以及何时通过使用第三方类恢复。我能够检测到网络丢失,但我无法检测到网络断开连接后何时恢复。我正在使用以下条件来检查工作正
我不自动加载数据库,因为我的应用程序的大多数页面不需要需要数据库处理,否则整个过程会变慢。我想要做的是在已经存在一个连接时不建立与 db 的新连接,而是使用它而不是打扰 server-db。那么我如何
我在客户端有以下代码: socket.on('reconnect', function() { alert("Reconnected!"); }); 文档说: 事件:“重新连接”成功重新连接后
在脚本运行一定时间后,我在 Ruby 中遇到“mysql 已消失”错误。 我想尝试告诉 mysql gem 在连接丢失时自动重新连接。 我当前的代码如下所示: def self.connect()
我正在尝试使用 retrievePeripheralsWithIdentifiers: 方法尝试连接到之前连接的外围设备。只有当外围设备在 iOS 设备附近时,连接尝试才会成功。 现在,我如何确定已知
ZooKeeper FAQ告诉 ZooKeeper 对象必须在状态变为 SESSION_EXPIRED 时重新创建。 是否有任何代码示例可以正确执行此类重新连接? zookeeper 发行版中的 re
我的 node-js 应用程序使用 bitfinex-api-node npm 包建立 websocket 连接以从 Bitfinex 加密货币交易所接收数据。 不幸的是,几个小时后连接悄无声息地中断
我正在开发一个多数据库系统。系统会集成客户端本地的mssql服务器。 我会将凭证信息存储在我的主数据库中。我想将一些表迁移到我的客户本地数据库。 如您所知,我们可以选择如下连接。 Schema::co
我是一名优秀的程序员,十分优秀!