执行函数并获取特定数据结构中的返回变量

时间:2013-11-11 06:31:49

标签: perl rabbitmq

我正在尝试使用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打破。我所有的数据操作都必须在这个循环中进行。这样对吗?

1 个答案:

答案 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 
}