0

私が取り組んでいるプロジェクトのためにRabbitMQを学ぼうとしています。私の調査では、Net::RabbitMQ と AnyEvent::RabbitMQ の 2 つのライブラリを使用することがわかりました。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.
4

2 に答える 2

1

問題は、%qparams直接ではなく参照渡しする必要があることです。28行目を次のように変更します。

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

私の問題を解決しました。

于 2014-11-14T13:58:30.187 に答える
0

エラーになりません。エラーが発生したかどうかを確認せずに STDERR に出力します。それは私が試してみると言います、そしてそれはします:

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

これは単なる情報であり、エラーではありません。

于 2014-11-14T13:52:52.883 に答える