我正在尝试使用RabbitMQ库“perl(使用Net :: RabbitFoot)”。在他们的教程中,他们有这样的代码:
sub callback {
my $var = shift;
my $body = $var->{body}->{payload};
print " [x] Done\n";
$ch->ack();
print" $body\n";
return $body; #######this is my line########
}
$ch->qos(prefetch_count => 1,);
my @ice;
$ch->consume(
on_consume => \&callback,
no_ack => 0,
);
# Wait forever
AnyEvent->condvar->recv;
Here是整个代码。 所以,我需要的是获取$ body值来使用它。实际上我需要将此值写入我的数据库。我认为
$ch->consume(
on_consume => \&callback,
no_ack => 0,
);
是无限循环,我只能用CTR + C打破。我所有的数据操作都必须在这个循环中进行。这样对吗?
答案 0 :(得分:1)
是的,您将在回调子中接收数据。为了简化测试,我将使用单独的子/包与数据库进行交互。
sub callback {
my $var = shift;
my $body = $var->{body}->{payload};
store_in_db($body);
}
use Data::Dumper;
sub store_in_db{
my $data =shift;
### check what kind of data are you received
print Dumper($data);
#### process and store it in the database
}