2014-11-14 36 views
0

我正在努力學習RabbitMQ,瞭解我正在開發的項目。我的研究顯示使用兩個庫,Net :: RabbitMQ和AnyEvent :: RabbitMQ。 AnyEvent :: RabbitMQ似乎對我的需求過分巴洛克式,但Net :: RabbitMQ似乎不起作用,因爲示例顯示它應該。 下面是我找到的一些示例代碼,它與我在POD中看到的相符,但它不起作用。來自Net :: RabbitMQ的示例不起作用

#!/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

問題是%qparams需要通過引用而不是直接傳遞。改行28到:

$mq->connect($qserver, \%qparms) ; 

解決了我的問題。

0

它不會報錯了。它打印到STDERR而不檢查是否發生錯誤。它說我會嘗試,然後它會:

$mq->connect($qserver, %qparms); 

這只是一個信息,而不是一個錯誤。

+0

在行尾是錯誤的:用法:Net :: RabbitMQ :: connect(conn,hostname,options)at。 /send.pl第28行。我想通了我的問題... – SparkeyG 2014-11-14 13:56:48

+1

只因爲我是盲人;) – 2014-11-14 14:01:07