我正在使用vladmir yuldashev/laravel队列Rabbitmq库在Lumen项目中使用RabbitMq队列。
队列功能工作正常,但我在日志文件中看到大量以下错误。
流明。错误:PhpAmqpLib\异常\AMQPRuntime异常:通道连接关闭.在 /var/www/html/vendor/php-amqplib/php-amqplib/PhpAmqpLib/Channel/AbstractChannel.php:227
从错误堆栈跟踪来看,队列名称似乎被取为“NULL”。这是我的Rabbitmq连接配置从queue.php
'rabbitmq' => [
'driver' => 'rabbitmq',
'host' => env('RABBITMQ_HOST', 'rabbitmq'),
'port' => env('RABBITMQ_PORT', 5672),
'vhost' => env('RABBITMQ_VHOST', '/'),
'login' => env('RABBITMQ_LOGIN', 'guest'),
'password' => env('RABBITMQ_PASSWORD', 'guest'),
'queue' => env('RABBITMQ_QUEUE'),
// name of the default queue,
'exchange_declare' => env('RABBITMQ_EXCHANGE_DECLARE', true),
// create the exchange if not exists
'queue_declare_bind' => env('RABBITMQ_QUEUE_DECLARE_BIND', true),
// create the queue if not exists and bind to the exchange
'queue_params' => [
'passive' => env('RABBITMQ_QUEUE_PASSIVE', false),
'durable' => env('RABBITMQ_QUEUE_DURABLE', true),
'exclusive' => env('RABBITMQ_QUEUE_EXCLUSIVE', false),
'auto_delete' => env('RABBITMQ_QUEUE_AUTODELETE', false),
],
'exchange_params' => [
'name' => env('RABBITMQ_EXCHANGE_NAME', null),
'type' => env('RABBITMQ_EXCHANGE_TYPE', 'direct'),
// more info at http://www.rabbitmq.com/tutorials/amqp-concepts.html
'passive' => env('RABBITMQ_EXCHANGE_PASSIVE', false),
'durable' => env('RABBITMQ_EXCHANGE_DURABLE', true),
// the exchange will survive server restarts
'auto_delete' => env('RABBITMQ_EXCHANGE_AUTODELETE', false),
],
'sleep_on_error' => env('RABBITMQ_ERROR_SLEEP', 5), // the number of seconds to sleep if there's an error communicating with rabbitmq
]
我没有使用默认队列。相反,我的每个事件侦听器都为自己声明一个队列。下面是我如何使用队列命令来启动辅助角色和侦听器。
工人
php artisan queue:work rabbitmq
听众
php artisan queue:listen --queue=my-queue-1 --timeout=0
php artisan queue:listen --queue=my-queue-2 --timeout=0
php artisan queue:listen --queue=my-queue-3 --timeout=0
每个队列功能都工作正常。
还有一个注意事项:不确定是否重要,我的事件是连锁的。也就是说,我正在从事件1听众中触发事件2,依此类推。
好吧,我终于有了突破。显然,错误发生是因为这个命令php工匠队列:工作Rabbitmq
,因为我没有传递--query
选项,我没有在我的. env
文件中声明默认队列。
根据SO上的这个问题,我对这些队列命令如何工作的理解是不正确的。
如上所述,我已经完全删除了队列:监听
,并使用了多个队列:work
命令,将队列名称传递给每个work命令。修改后,我的命令是这样的:
php artisan queue:work --queue=my-queue-1 --timeout=0
php artisan queue:work --queue=my-queue-2 --timeout=0
php artisan queue:work --queue=my-queue-3 --timeout=0
我使用weblogic应用服务器和oracle数据库。我使用jdbc与oracle数据库通信。我从weblogic数据源获得连接,并向表中插入一条记录。问题是,当我想关闭连接(插入数据库后)时,我会遇到一个异常(连接已经关闭)。这是我的代码: 但是联系。close语句引发异常: 我试图避免连接。close语句(因为我教过连接是自动关闭的!!但过了一段时间,所有的连接都打开了,因此引发了一个异常)
我所尝试的 我尝试将我的域添加到以下部分https://www.elastic.co/guide/en/cloud-on-k8s/current/k8s-http-settings-tls-sans.html#k8s-elasticsearch-http-service-san 我曾尝试使用openssl生成自签名证书,但没有成功。尝试本地连接将返回以下错误消息。 curl-u“弹性:$passw
运行CRON JOB时,得到一个异常,说连接已经关闭。应用程序正在dropwizard上运行,以下是数据库配置 请帮助解决问题。
每个人 都。我正在编写一个函数,该函数使用类 httpURL 连接连接到服务器。在代码中,我建立了一个连接,按顺序调用了获取输出流()和获取输入流()方法。然后我断开连接。在此之后,我尝试获取通过 getInputStream() 方法获得的数据,但编译器提醒 NullPointer 异常。 代码如下: 在调试尝试之后,当我将断开连接行移到finally模块的最后一行时,一切都会好起来。但我感到困
我用JSch制作了一个SSH客户端。客户端与我的Apache Mina SSH服务器正常工作。但当我用真正的设备测试它时,它失败了。 这是客户端的代码: 代码此时失败: 连接到主机时出错:127.0.0.1,端口:22 com。jcraft。jsch。JSCHEException:com上的会话已关闭 。jcraft。jsch。一场openChannel(Session.java:861) 我的问
我使用AWS DocumentDB作为我在node中开发的应用程序中的数据库。与MongoDB兼容的js。我已经使用MongoClient连接到我的数据库。我的应用程序会执行,但每次执行时会连接大约1000 DB的数据,然后会出现错误: 我尝试使用关闭连接,然后它给出连接池已关闭。我相信这个问题是由于太多的数据库连接造成的。 如何释放MongoDB中的连接?感谢任何帮助。