NAME
Net::RabbitMQ::Channel - use rabbitmq, OOP style
SYNOPSIS
use Net::RabbitMQ::Channel;
my $channel = Net::RabbitMQ::Channel->new (1, {
hosts => {
rabbit1 => {user => 'guest', pass => 'guest'},
rabbit2 => {user => 'guest', pass => 'guest'}
}
});
my $exchange = $channel->exchange_declare (
'test.x',
exchange_type => "topic",
);
my $publisher_key = 'test.*';
# consumer part
my $queue = $channel->queue_declare (
'test.q',
exclusive => 0,
);
$queue->bind ($exchange, $publisher_key);
# publisher part
$exchange->publish ($publisher_key, $message,
app_id => 'test',
timestamp => time
);
# consumer part
my $message = $queue->get;
METHODS
init
- new
-
my $channel = Net::RabbitMQ::Channel->new (1, { # mandatory hosts => {host_name => {user => 'user_name', pass => 'password'}}, # optional });
when creating Net::RabbitMQ::Channel you must provide channel number and configuration options.
in the current version only 'hosts' key is supported. each key for 'hosts' specifies one rabbitmq broker configuration. if current broker connection fails, module tries to reconnect to another one.
working with channel
- exchange_declare
-
declares exchange
my $exchange = $self->exchange_declare ( 'test.exchange', package => 'My::Exchange', # Net::RabbitMQ::Exchange if omitted passive => 0, # 0 durable => 1, # 1 auto_delete => 0, # 0 exchange_type => "topic" );
- queue_declare
-
declares queue
my $queue = $self->queue_declare ( 'test.queue', package => 'My::Queue', # Net::RabbitMQ::Queue if omitted passive => 0, # 0 durable => 1, # 1 auto_delete => 0, # 0 exclusive => 0 );
- publish
-
publish message to routing key
a typical workflow for a producer role is: open channel, declare exchange, and publish message via routing key
please, note: queue for recieving that message must be declared and binded to exchange using routing key prior to message publishing.
$channel->publish ($publisher_key, $message, {exchange => $exchange->name}, { # content_type => $string, # content_encoding => $string, # correlation_id => $string, # reply_to => $string, # expiration => $string, # message_id => $string, # type => $string, # user_id => $string, app_id => 'test', # delivery_mode => $integer, # priority => $integer, timestamp => time });
- close
-
stub
AUTHOR
Ivan Baktsheev, <apla at the-singlers.us>
BUGS
Please report any bugs or feature requests to my email address, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Net::RabbitMQ::Channel. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
SUPPORT
ACKNOWLEDGEMENTS
COPYRIGHT & LICENSE
Copyright 2010-2011 Ivan Baktsheev
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.