1. Go to this page and download the library: Download comlaude/laravel-amqp library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
comlaude / laravel-amqp example snippets
return [
'use' => 'production',
'properties' => [
'production' => [
'host' => 'localhost',
'port' => 5672,
'username' => '',
'password' => '',
'vhost' => '/',
'connect_options' => [],
'ssl_options' => [],
'exchange' => 'amq.topic',
'exchange_type' => 'topic',
'exchange_passive' => false,
'exchange_durable' => true,
'exchange_auto_delete' => false,
'exchange_internal' => false,
'exchange_nowait' => false,
'exchange_properties' => [],
'queue_force_declare' => false,
'queue_passive' => false,
'queue_durable' => true, // only change when not using quorum queues
'queue_exclusive' => false,
'queue_auto_delete' => false, // only change when not using quorum queues
'queue_nowait' => false,
'queue_properties' => [
'x-ha-policy' => ['S', 'all'],
'x-queue-type' => ['S', 'quorum'],
// 'x-dead-letter-exchange' => ['S', 'amq.topic-dlx'], // if provided an exchange and queue (queue_name-dlx) will be automatically declared
// 'x-delivery-limit' => ['I', 5], // the delivery limit will be set on the relevant queue but not the DLX queue itself
],
'queue_acknowledge_is_final' => true, // if important work is done inside a consumer after the acknowledge call, this should be false
'queue_reject_is_final' => true, // if important work is done inside a consumer after the reject call, this should be false
'consumer_tag' => '',
'consumer_no_local' => false,
'consumer_no_ack' => false,
'consumer_exclusive' => false,
'consumer_nowait' => false,
'timeout' => 0, // seconds
'persistent' => false,
'persistent_restart_period' => 0, // seconds
'request_accepted_timeout' => 0.5, // seconds in decimal accepted
'request_handled_timeout' => 5, // seconds in decimal accepted
'qos' => true,
'qos_prefetch_size' => 0,
'qos_prefetch_count' => 1,
'qos_a_global' => false,
/*
|--------------------------------------------------------------------------
| An example binding set up when declaring exchange and queues
|--------------------------------------------------------------------------
|'bindings' => [
| [
| 'queue' => 'example',
| 'routing' => 'example.route.key',
| ],
|],
*/
],
],
];
if(Amqp::isEnabled()) {
// It is going to publish
}
Amqp::disable();
Amqp::enable();
Amqp::consume(function ($message) {
Amqp::acknowledge($message);
return "I handled this message " . $message->getBody();
});
Amqp::request('example.routing.key', [
'message1',
'message2',
], function ($message) {
echo("The remote server said " . $message->getBody());
});
// Or for single message requests you can just do
$response = Amqp::requestWithResponse('example.routing.key', 'quickly');
// $response is already the message content as a string "I handled this message quickly"
Amqp::consume(function ($message) {
var_dump($message->body);
Amqp::acknowledge($message);
}, [
'timeout' => 2,
'vhost' => 'vhost3',
'queue' => 'my-example-queue',
'persistent' => true // le-queue-dlx
'x-delivery-limit' => ['I', 5], // after 5 deliveries the message is routed to my-example-queue-dlx
],
]);
batch
$ php composer update
$ php composer
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.