Net::RabbitMQ - interact with RabbitMQ over AMQP using librabbitmq
use Net::RabbitMQ; my $mq = Net::RabbitMQ->new(); $mq->connect("localhost", { user => "guest", password => "guest" }); $mq->channel_open(1); $mq->publish(1, "queuename", "Hi there!"); $mq->disconnect();
Net::RabbitMQ provides a simple wrapper around the librabbitmq library that allows connecting, delcaring exchanges and queues, binding and unbinding queues, publising, consuming and receiving events.
Net::RabbitMQ
Error handling in this module is primarily achieve by Perl_croak (die). You should be making good use of eval around these methods to ensure that you appropriately catch the errors.
All methods, unless specifically stated, return nothing on success and die on failure.
Creates a new Net::RabbitMQ object.
$hostname is the host to which a connection will be attempted.
$hostname
$options is an optional hash respecting the following keys:
$options
{ user => $user, #default 'guest' password => $password, #default 'guest' port => $port, #default 5672 vhost => $vhost, #default '/' channel_max => $cmax, #default 0 frame_max => $fmax, #default 131072 heartbeat => $hearbeat, #default 0 }
Causes the connection to RabbitMQ to be torn down.
$channel is a positive integer describing the channel you which to open.
$channel
$channel is a positive integer describing the channel you which to close.
Returns the maximum allowed channel number.
$channel is a channel that has been opened with channel_open.
channel_open
$exchange is the name of the exchange to be instantiated.
$exchange
{ exchange_type => $type, #default 'direct' passive => $boolean, #default 0 durable => $boolean, #default 0 auto_delete => $boolean, #default 1 }
$queuename is the name of the queuename to be instantiated. If $queuename is undef or an empty string, then an auto generated queuename will be used.
$queuename
{ passive => $boolean, #default 0 durable => $boolean, #default 0 exclusive => $boolean, #default 0 auto_delete => $boolean, #default 1 }
This method returns the queuename delcared (important for retrieving the autogenerated queuename in the event that one was requested).
$queuename is a previously declared queue, $exchange is a previously declared exchange, and $routing_key is the routing key that will bind the specified queue to the specified exchange.
$routing_key
This is like the queue_bind with respect to arguments. This command unbinds the queue from the exchange.
queue_bind
$routing_key is the name of the routing key for this message.
{ exchange => $exchange, #default 'amq.direct' mandatory => $boolean, #default 0 immediate => $boolean, #default 0 }
$queuename is the name of the queue from which we'd like to consume.
{ consumer_tag => $tag, #absent by default no_local => $boolean, #default 0 no_ack => $boolean, #default 1 exclusive => $boolean, #default 0 }
The consumer_tag is returned. This command does not return AMQP frames, it simply notifies RabbitMQ that messages for this queue should be delivered down the specified channel.
This command receives and reconstructs AMQP frames and returns a hash containing the following information:
{ body => 'Magic Transient Payload', # the reconstructed body routing_key => 'nr_test_q', # route the message took exchange => 'nr_test_x', # exchange used content_type => 'foo', # (only if specified) delivery_tag => 1, # (used for acks) }
$delivery_tag the delivery tag seen from a returned frame from the recv method.
$delivery_tag
recv
$multiple specifies if multiple are to be acknowledged at once.
$multiple
$queuename is the queue to be purged.
$no_wait a boolean specifying if the call should not wait for the server to acknowledge the acknoledgement.
$no_wait
To install Net::RabbitMQ, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Net::RabbitMQ
CPAN shell
perl -MCPAN -e shell install Net::RabbitMQ
For more information on module installation, please visit the detailed CPAN module installation guide.