Net::AMQP
Net::AMQP - a AMQP 0.9.1 client library (built and tested against RabbitMQ)
Synopsis
First start a consumer that will print the received messages:
use v6;
use Net::AMQP;
my $n = Net::AMQP.new;
my $connection = $n.connect.result;
say 'connected';
my $channel = $n.open-channel(1).result;
say 'channel';
my $q = $channel.declare-queue('echo').result;
say 'queue';
$q.message-supply.tap({
say 'Got message!';
say $_.body.decode;
if $_.body.decode eq 'exit' {
$n.close("", "");
}
});
say 'set up';
$q.consume;
say 'consuming';
await $connection;
Then run the script that will send a message sent on the command line,
use v6;
use Net::AMQP;
sub MAIN($message) {
my $n = Net::AMQP.new;
await $n.connect;
my $channel = $n.open-channel(1).result;
$channel.exchange.result.publish(routing-key => "echo", body => $message.encode);
await $n.close("", "");
}
Description
This is an async network library. Any -supply method returns a supply, and every
other method will return a promise (with the exception of the initial Net::AMQP.new
call).
Methods
Net::AMQP
new
close
open-channel
connect
Net::AMQP::Channel
close
declare-exchange
exchange
declare-queue
queue
qos
flow
recover
Net::AMQP::Exchange
delete
publish
return-supply
NYI
ack-supply
NYI
Net::AMQP::Queue
bind
unbind
purge
delete
consume
cancel
NYI
message-supply
recover
NYI
Installation
In order for this to work you will need to have access to an AMQP
broker, the tests will, by default, use a broker on localhost
with the default credentials. The tests will be skipped if no
server is available,
If you want to test against other than localhost
or with different credentials then you can set the environment variables
* AMQP_HOST
* AMQP_PORT
* AMQP_LOGIN
* AMQP_PASSWORD
* AMQP_VHOST
as appropriate before running the tests.
Assuming you have a working installation of Rakudo then you will be able to install this with zef :
zef install Net::AMQP
# or if you have a local copy
zef install .