NAME
Net::RabbitMQ - interact with RabbitMQ over AMQP using librabbitmq
SYNOPSIS
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();
DESCRIPTION
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.
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.
Methods
All methods, unless specifically stated, return nothing on success and die on failure.
- new()
-
Creates a new Net::RabbitMQ object.
- connect( $hostname, $options )
-
$hostnameis the host to which a connection will be attempted.$optionsis an optional hash respecting the following keys:{ 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 } - disconnect()
-
Causes the connection to RabbitMQ to be torn down.
- channel_open($channel)
-
$channelis a positive integer describing the channel you which to open. - channel_close($channel)
-
$channelis a positive integer describing the channel you which to close. - get_channel_max()
-
Returns the maximum allowed channel number.
- exchange_declare($channel, $exchange, $options)
-
$channelis a channel that has been opened withchannel_open.$exchangeis the name of the exchange to be instantiated.$optionsis an optional hash respecting the following keys:{ exchange_type => $type, #default 'direct' passive => $boolean, #default 0 durable => $boolean, #default 0 auto_delete => $boolean, #default 1 } - queue_declare($channel, $queuename, $options)
-
$channelis a channel that has been opened withchannel_open.$queuenameis the name of the queuename to be instantiated. If$queuenameis undef or an empty string, then an auto generated queuename will be used.$optionsis an optional hash respecting the following keys:{ 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).
- queue_bind($channel, $queuename, $exchange, $routing_key)
-
$channelis a channel that has been opened withchannel_open.$queuenameis a previously declared queue,$exchangeis a previously declared exchange, and$routing_keyis the routing key that will bind the specified queue to the specified exchange. - queue_unbind($channel, $queuename, $exchange, $routing_key)
-
This is like the
queue_bindwith respect to arguments. This command unbinds the queue from the exchange. - publish($channel, $routing_key, $body, $options)
-
$channelis a channel that has been opened withchannel_open.$routing_keyis the name of the routing key for this message.$bodyis the payload to enqueue.$optionsis an optional hash respecting the following keys:{ exchange => $exchange, #default 'amq.direct' mandatory => $boolean, #default 0 immediate => $boolean, #default 0 } - consume($channel, $queuename, $options)
-
$channelis a channel that has been opened withchannel_open.$queuenameis the name of the queue from which we'd like to consume.$optionsis an optional hash respecting the following keys:{ 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.
- recv()
-
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) } - get($channel, $queuename, $options)
-
$channelis a channel that has been opened withchannel_open.$queuenameis the name of the queue from which we'd like to consume.$optionsis an optional hash respecting the following keys:This command runs an amqp_basic_get which returns undef immediately if no messages are available on the queue and returns a has as follows if a message is available.
{ 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) redelivered => 0, # if message is redelivered message_count => 0, # message count } - ack($channel, $delivery_tag, $multiple = 0)
-
$channelis a channel that has been opened withchannel_open.$delivery_tagthe delivery tag seen from a returned frame from therecvmethod.$multiplespecifies if multiple are to be acknowledged at once. - purge($channel, $queuename, $no_wait = 0)
-
$channelis a channel that has been opened withchannel_open.$queuenameis the queue to be purged.$no_waita boolean specifying if the call should not wait for the server to acknowledge the acknoledgement. - tx_select($channel)
-
$channelis a channel that has been opened withchannel_open.Start a server-side (tx) transaction over $channel.
- tx_commit($channel)
-
$channelis a channel that has been opened withchannel_open.Commit a server-side (tx) transaction over $channel.
- tx_rollback($channel)
-
$channelis a channel that has been opened withchannel_open.Rollback a server-side (tx) transaction over $channel.