In this example we are processing each type of message one by one. So you can see how data gets processed.
<?php require 'connection.php'; try { $channel = new AMQPChannel($connection); $exchange = new AMQPExchange($channel); $exchange->setName('Test1'); $exchange->setFlags(AMQP_DURABLE); $exchange->setType(AMQP_EX_TYPE_DIRECT); // Set the exchange type to 'direct' $data = [ "data for routing key a " . time(), "data for routing key a " . time(), "data for routing key a " . time(), "data for routing key a " . time(), ]; $data2 = [ "data for routing key b " . time(), "data for routing key b " . time(), "data for routing key b " . time(), "data for routing key b " . time(), ]; if (!empty($data)) { foreach ($data as $message) { $exchange->publish($message, 'routing_key_A'); } } if (!empty($data2)) { foreach ($data2 as $message2) { $exchange->publish($message2, 'routing_key_B'); } } } catch (AMQPConnectionException | AMQPExchangeException | AMQPChannelException $e) { var_dump($e->getMessage()); }
Now in case you want to process whole array instead of each message at a time. you can change your code as given below.
<?php require 'connection.php'; try { $channel = new AMQPChannel($connection); $exchange = new AMQPExchange($channel); $exchange->setName('Test1'); $exchange->setFlags(AMQP_DURABLE); $exchange->setType(AMQP_EX_TYPE_DIRECT); // Set the exchange type to 'direct' $data = [ "data for routing key a " . time(), "data for routing key a " . time(), "data for routing key a " . time(), "data for routing key a " . time(), ]; $data2 = [ "data for routing key b " . time(), "data for routing key b " . time(), "data for routing key b " . time(), "data for routing key b " . time(), ]; if (!empty($data)) { $exchange->batchPublish($data, 'routing_key_A'); } if (!empty($data2)) { $exchange->batchPublish($data2, 'routing_key_B'); } // Publish all messages in the batch $exchange->publishBatch(); } catch (AMQPConnectionException | AMQPExchangeException | AMQPChannelException $e) { var_dump($e->getMessage()); }
Hope this guide helps