57 lines
1.8 KiB
PHP
57 lines
1.8 KiB
PHP
<?php
|
|
namespace App\Queue;
|
|
|
|
use PhpAmqpLib\Channel\AMQPChannel;
|
|
use PhpAmqpLib\Exception\AMQPChannelClosedException;
|
|
use PhpAmqpLib\Exception\AMQPConnectionClosedException;
|
|
use VladimirYuldashev\LaravelQueueRabbitMQ\Queue\RabbitMQQueue as BaseRabbitMQQueue;
|
|
|
|
class RabbitMQQueue extends BaseRabbitMQQueue
|
|
{
|
|
/**
|
|
* Create a payload array from the given job and data.
|
|
*
|
|
* @param string|object $job
|
|
* @param string $queue
|
|
* @param mixed $data
|
|
*/
|
|
protected function createPayloadArray($job, $queue, $data = ''): array
|
|
{
|
|
return array_merge(
|
|
parent::createPayloadArray($job, $queue, $data), [
|
|
'id' => $this->getRandomId(),
|
|
]
|
|
);
|
|
}
|
|
|
|
protected function publishBasic($msg, $exchange = '', $destination = '', $mandatory = false, $immediate = false, $ticket = null): void
|
|
{
|
|
try {
|
|
parent::publishBasic($msg, $exchange, $destination, $mandatory, $immediate, $ticket);
|
|
} catch (AMQPConnectionClosedException|AMQPChannelClosedException) {
|
|
$this->reconnect();
|
|
parent::publishBasic($msg, $exchange, $destination, $mandatory, $immediate, $ticket);
|
|
}
|
|
}
|
|
|
|
protected function publishBatch($jobs, $data = '', $queue = null): void
|
|
{
|
|
try {
|
|
parent::publishBatch($jobs, $data, $queue);
|
|
} catch (AMQPConnectionClosedException|AMQPChannelClosedException) {
|
|
$this->reconnect();
|
|
parent::publishBatch($jobs, $data, $queue);
|
|
}
|
|
}
|
|
|
|
protected function createChannel(): AMQPChannel
|
|
{
|
|
try {
|
|
return parent::createChannel();
|
|
} catch (AMQPConnectionClosedException) {
|
|
$this->reconnect();
|
|
return parent::createChannel();
|
|
}
|
|
}
|
|
}
|