iamfarhad/laravel-rabbitmq
Production-ready RabbitMQ queue driver for Laravel with native Queue integration. Built on ext-amqp with connection/channel pooling, configurable topology, Horizon hooks, Octane-safe resets, and optional high-performance basic_consume workers plus admin Artisan commands.
RabbitMQJob::attempts() always returned 1 because the attempt counter was never preserved across republishing, so jobs with $tries > 1 never reached their retry limit and looped forever instead of failing. The attempt count is now persisted in the job payload on release() and read back on redelivery, so attempts() increments correctly and maxTries is enforced as expected.user.*.email)'backoff' => [
'enabled' => true,
'base_delay' => 1000,
'max_delay' => 60000,
'multiplier' => 2.0,
'jitter' => true,
],
'exchanges' => [
'default' => [...],
'notifications' => [...],
// Custom exchanges
],
'queues' => [
'default' => [...],
'high-priority' => [...],
// Custom queues
],
'dead_letter' => [
'enabled' => true,
'exchange' => 'dlx',
'exchange_type' => 'direct',
'queue_suffix' => '.dlq',
],
'delayed_message' => [
'enabled' => false,
'plugin_enabled' => false,
],
'rpc' => [
'enabled' => false,
'timeout' => 30,
],
'publisher_confirms' => [
'enabled' => false,
'timeout' => 5,
],
'transactions' => [
'enabled' => false,
],
RABBITMQ_BACKOFF_ENABLED - Enable exponential backoffRABBITMQ_BACKOFF_BASE_DELAY - Base delay in millisecondsRABBITMQ_BACKOFF_MAX_DELAY - Maximum delay in millisecondsRABBITMQ_BACKOFF_MULTIPLIER - Delay multiplierRABBITMQ_BACKOFF_JITTER - Enable jitterRABBITMQ_DLX_ENABLED - Enable dead letter exchangeRABBITMQ_DLX_EXCHANGE - DLX exchange nameRABBITMQ_DLX_EXCHANGE_TYPE - DLX exchange typeRABBITMQ_DLX_QUEUE_SUFFIX - DLQ suffixRABBITMQ_DLX_TTL - Message TTL in millisecondsRABBITMQ_DELAYED_MESSAGE_ENABLED - Enable delayed messagesRABBITMQ_DELAYED_PLUGIN_ENABLED - Use delayed message pluginRABBITMQ_DELAYED_EXCHANGE - Delayed exchange nameRABBITMQ_RPC_ENABLED - Enable RPC supportRABBITMQ_RPC_TIMEOUT - RPC timeout in secondsRABBITMQ_RPC_CALLBACK_PREFIX - RPC callback queue prefixRABBITMQ_PUBLISHER_CONFIRMS_ENABLED - Enable publisher confirmsRABBITMQ_PUBLISHER_CONFIRMS_TIMEOUT - Publisher confirms timeoutRABBITMQ_TRANSACTIONS_ENABLED - Enable transactions// Advanced queue declaration
$queue->declareAdvancedQueue($name, $durable, $autoDelete, $lazy, $priority, $deadLetterConfig);
// Exchange management
$queue->getExchangeManager();
$queue->publishToExchange($exchange, $payload, $routingKey, $headers);
// Backoff and retry
$queue->getBackoff();
// Publisher confirms
$queue->getPublisherConfirms();
// Transactions
$queue->getTransactionManager();
$queue->transaction(callable $callback);
// RPC
$queue->getRpcClient();
$queue->rpcCall($queue, $message, $headers);
// Dead letter exchange
$queue->setupDeadLetterExchange($queueName, $dlxName, $dlxRoutingKey);
// Delayed messages
$queue->publishDelayed($queue, $payload, $delay, $headers);
ExchangeManager - Exchange and routing managementExponentialBackoff - Retry logic with exponential backoffRpcClient - RPC client implementationRpcServer - RPC server implementationPublisherConfirms - Publisher confirm handlingTransactionManager - Transaction managementNone. All new features are opt-in and backward compatible.
How can I help you explore Laravel packages today?