[libanyevent-rabbitmq-perl] 73/151: Implement the reject method.
Damyan Ivanov
dmn at moszumanska.debian.org
Thu Jan 16 11:03:05 UTC 2014
This is an automated email from the git hooks/post-receive script.
dmn pushed a commit to annotated tag debian/1.12-1
in repository libanyevent-rabbitmq-perl.
commit e97cab52c19015b0cce7155729c523e44b48d450
Author: Johannes Plunien <johannes.plunien at xing.com>
Date: Thu Mar 10 09:30:37 2011 +0100
Implement the reject method.
---
lib/AnyEvent/RabbitMQ/Channel.pm | 18 ++++++++++++++++++
lib/Net/RabbitFoot/Channel.pm | 2 +-
xt/04_anyevent.t | 36 +++++++++++++++++++++++++++++++++++-
3 files changed, 54 insertions(+), 2 deletions(-)
diff --git a/lib/AnyEvent/RabbitMQ/Channel.pm b/lib/AnyEvent/RabbitMQ/Channel.pm
index 4711622..262d6f5 100644
--- a/lib/AnyEvent/RabbitMQ/Channel.pm
+++ b/lib/AnyEvent/RabbitMQ/Channel.pm
@@ -508,6 +508,24 @@ sub recover {
return $self;
}
+sub reject {
+ my $self = shift;
+ my %args = @_;
+
+ return $self if !$self->_check_open( sub { } );
+
+ $self->{connection}->_push_write(
+ Net::AMQP::Protocol::Basic::Reject->new(
+ delivery_tag => 0,
+ requeue => 0,
+ %args,
+ ),
+ $self->{id},
+ );
+
+ return $self;
+}
+
sub select_tx {
my $self = shift;
my ($cb, $failure_cb,) = $self->_delete_cbs(@_);
diff --git a/lib/Net/RabbitFoot/Channel.pm b/lib/Net/RabbitFoot/Channel.pm
index a2dea7b..6c00e32 100644
--- a/lib/Net/RabbitFoot/Channel.pm
+++ b/lib/Net/RabbitFoot/Channel.pm
@@ -34,7 +34,7 @@ BEGIN {
};
}
- for my $method (qw(publish ack recover)) {
+ for my $method (qw(publish ack recover reject)) {
no strict 'refs';
*{__PACKAGE__ . '::' . $method} = sub {
my $self = shift;
diff --git a/xt/04_anyevent.t b/xt/04_anyevent.t
index f83fde0..96ce051 100644
--- a/xt/04_anyevent.t
+++ b/xt/04_anyevent.t
@@ -25,7 +25,7 @@ eval {
plan skip_all => 'Connection failure: '
. $conf->{host} . ':' . $conf->{port} if $@;
-plan tests => 24;
+plan tests => 25;
use Net::RabbitFoot ();
use AnyEvent::RabbitMQ;
@@ -278,6 +278,40 @@ $done->recv;
pass('recover');
$done = AnyEvent->condvar;
+my $reject_count = 0;
+$ch->consume(
+ queue => 'test_q',
+ no_ack => 0,
+ on_consume => sub {
+ my $response = shift;
+
+ if ( 5 > ++$reject_count ) {
+ $ch->reject(
+ delivery_tag => $response->{deliver}->method_frame->delivery_tag,
+
+ # requeue! Else the server does not deliver the message again to this client.
+ requeue => 1,
+ );
+ return;
+ }
+
+ $ch->ack( delivery_tag => $response->{deliver}->method_frame->delivery_tag );
+
+ $ch->cancel(
+ consumer_tag => $response->{deliver}->method_frame->consumer_tag,
+ on_success => sub {
+ $done->send;
+ },
+ on_failure => failure_cb($done),
+ );
+ },
+ on_failure => failure_cb($done),
+);
+publish( $ch, 'RabbitMQ is powerful.', $done, );
+$done->recv;
+pass('reject');
+
+$done = AnyEvent->condvar;
$ch->select_tx(
on_success => sub {
pass('select tx');
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libanyevent-rabbitmq-perl.git
More information about the Pkg-perl-cvs-commits
mailing list