我正在尝试学习RabbitMQ我正在开发的项目。我的研究显示了两个使用的库,Net :: RabbitMQ和AnyEvent :: RabbitMQ。 AnyEvent :: RabbitMQ对于我的需求来说似乎过于巴洛克式但是Net :: RabbitMQ似乎不能像示例所示那样工作。 下面是我发现的一些示例代码,它与我在POD中看到的匹配,但它不起作用。
#!/usr/bin/env perl
use strict;
use warnings;
use Net::RabbitMQ;
{
# closure to return a new channel ID every time we call nextchan
my $nextchan = 1;
sub nextchan { return $nextchan++ }
}
### BEGIN CONFIGURABLE PARAMETERS ######################################
my $qserver = q{xx.xx.xx.xx};
my %qparms = ();
my $qname = q{gravity.checks};
my $message = q{Test injection};
### NO CONFIGURABLE PARAMETERS BELOW THIS LINE #########################
my $mq = Net::RabbitMQ->new();
my $chanID = nextchan();
$message .= " " . scalar(localtime);
print STDERR qq{Will try to send message "$message" through channel $chanID};
$mq->connect( $qserver, %qparms );
出错:
$. / send . pl
Will try to send message "Test injection Fri Nov 14 06:50:44 2014" through channel 1 Usage : Net::RabbitMQ::connect( conn, hostname, options ) at . /send.pl line 28.
答案 0 :(得分:0)
它不会出错。它打印到STDERR而不检查是否发生错误。它说我会尝试,然后它会:
$mq->connect( $qserver, %qparms );
这只是一个信息,而不是错误。
答案 1 :(得分:0)
问题是%qparams
需要通过引用而不是直接传递。变更线28为:
$mq->connect($qserver, \%qparms) ;
解决了我的问题。