NAME
Mojo::RabbitMQ::Client::Publisher - simple Mojo::RabbitMQ::Client based publisher
SYNOPSIS
use Mojo::RabbitMQ::Client::Publisher;my $publisher = Mojo::RabbitMQ::Client::Publisher->new(url => 'amqp://guest:[email protected]:5672/?exchange=mojo&routing_key=mojo');$publisher->publish_p({encode => { to => 'json'}},routing_key => 'mojo_mq')->then(sub {say "Message published";})->catch(sub {die "Publishing failed"})->wait;
DESCRIPTION
ATTRIBUTES
Mojo::RabbitMQ::Client::Publisher has following attributes.
url
Sets all connection parameters in one string, according to specification from <https://www.rabbitmq.com/uri-spec.html>.
For detailed description please see Mojo::RabbitMQ::Client#url.
METHODS
Mojo::RabbitMQ::Client::Publisher implements only single method.
publish_p
$publisher->publish_p('simple plain text body');$publisher->publish_p({ some => 'json' });$publisher->publish_p($body, { header => 'content' }, routing_key => 'mojo', mandatory => 1);
Method signature
publish_p($body!, \%headers?, *@params)
- body
-
First argument is mandatory body content of published message. Any reference passed here will be encoded as JSON and accordingly
"content_type"header will be set to"application/json".
- headers
-
If second argument is a HASHREF it will be merged to message headers.
- params
-
Any other arguments will be considered key/value pairs and passed to the Client's publish method as arguments overriding everything besides body argument.
So this:
$publisher->publish({ json => 'object' }, { header => 'content' });is similar to this:
$publisher->publish({ json => 'object' }, header => { header => 'content' });But beware - headers passed as a HASHREF get merged into the header constructed by the Publisher, but params override values; so if you pass
"header"as a param like this, it will override the header constructed by the Publisher, and the message will lack the"content_type"header, even though you passed a reference as the body argument! With the first example, the"content_type"header would be included.
SEE ALSO
Mojo::RabbitMQ::Client
COPYRIGHT AND LICENSE
Copyright (C) 2015-2017, Sebastian Podjasek and others
This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.