This is where your description should go. Try and limit it to a paragraph or two. Consider adding a small example.
We invest a lot of resources into creating best in class open source packages. You can support us by buying one of our paid products.
We highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using. You'll find our address on our contact page. We publish all received postcards on our virtual postcard wall.
You can install the package via composer:
composer require alexfn/nano-service
- Add environment variables
AMQP_PROJECT="project-name"
AMQP_HOST="rabbitmq-host"
AMQP_PORT="5672"
AMQP_USER="rmuser"
AMQP_PASS="rmpassword"
AMQP_VHOST="/"
# Required for the consumer
AMQP_MICROSERVICE_NAME="microservice-name"
# For publisher encryption
AMQP_PRIVATE_KEY="private-key"
# For message getters
AMQP_PUBLIC_KEY="public-key"
- Create message
$message = new NanoServiceMessage(
// Body data
[
'key' => 'Value',
],
// Message property (Optional)
[
'content_type' => 'text/json',
'delivery_mode' => AMQPMessage::DELIVERY_MODE_PERSISTENT,
]
);
$message->addPayload([
'key1' => 'Value 1',
'key2' => 'Value 2',
]);
- Publish message
$message = (new NanoServiceMessage())
->addPayload([
'key' => 'Value',
]);
(new NanoPublisher())
->setMessage($message)
->publish('event-name');
- Consume messages
$consumer = new NanoConsumer();
$consumer
->events('event-one', 'event-two')
->consume(function (NanoServiceMessage $message) {
$payload = $message->getPayload();// array
});
$message = (new NanoServiceMessage())
->addPayload([
'key' => 'Value',
]);
$message = (new NanoServiceMessage())
->addMeta([
'key' => 'Value',
]);
$message->getPayload();
$message->getPayloadAttribute('key');
$message->getPayloadAttribute('key', 'default_value');
$message->addPayload([]);
$message->getPayloadAttribute('attribute', []);
$message->getMeta();
$message->getMetaAttribute('key');
$message->getMetaAttribute('key', 'default_value');
$message->addMeta([]);
$message->getMetaAttribute('attribute', []);
$message->getStatusCode(); // Default 'unknown'
$message->setStatusCode('success');
$message->getStatusData(); // Default []
$message->setStatusData([]);
// Encrypting a message with a private key
$message = (new NanoServiceMessage())
->setEncryptedAttribute('attribute', 'My secret data');
// Decrypting with the public key
$message->getEncryptedAttribute('attribute'); // My secret data
$message = (new NanoServiceMessage())
->addPayload([
'key1' => 'Value 1',
'key2' => 'Value 2',
])
->addPayload([
'key1' => 'New value 1',
'key3' => 'New value 3',
]);
// Result: {"key1":"Value 1","key2":"Value 2","key3":"New value 3"}
$message = (new NanoServiceMessage())
->addPayload([
'key1' => 'Value 1',
'key2' => 'Value 2',
])
->addPayload(
[
'key1' => 'New value 1',
'key3' => 'New value 3',
],
true
);
// Result: {"key1":"New value 1","key2":"Value 2","key3":"New value 3"}
$message = (new NanoServiceMessage())
->setStatusData([
'key1' => 'Value 1',
'key2' => 'Value 2',
])
->setStatusData(
[
'key1' => 'New value 1',
'key3' => 'New value 3',
],
true
);
// Result: {"key1":"New value 1","key3":"New value 3"}
$message->setDebug();
(new NanoPublisher())
->setMessage($message)
->publish('event-name');
$consumer
->events('event-name')
->consume($callback, function (NanoServiceMessage $message) {
// debugCallback (Optional)
});
composer test
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
Please review our security policy on how to report security vulnerabilities.
The MIT License (MIT). Please see License File for more information.