无法在C:/ Perl / site / lib / Net / Stomp上的未定义值上调用方法“headers”。下午线122

时间:2013-06-13 07:45:39

标签: perl stomp

我正在尝试从Perl向EMS服务器中运行的队列发送EMS消息。我正在使用STOMP模块连接到EMS队列来发送消息。这是我的代码 -

JMSQUEUE.pl:

use Net::Stomp;
use Net::Stomp::Frame;
my $stomp = Net::Stomp->new( { hostname => 'localhost', port => '7222' } );
$stomp->connect( { login => 'admin', passcode => '' } );
$stomp->send( { destination => '/queue/pradeepexp', body => 'test message' } );
$stomp->disconnect;

在我的模块中--STOMP.PM:

sub connect {
    my ( $self, $conf ) = @_;

    my $frame =
      Net::Stomp::Frame->new( { command => 'CONNECT', headers => $conf } );
    $self->send_frame($frame);
    $frame = $self->receive_frame;

    # Setting initial values for session id, as given from
    # the stomp server
    $self->session_id( $frame->headers->{session} );
    $self->_connect_headers($conf);

    return $frame;
}

在调用connect之前我需要做哪些设置?

2 个答案:

答案 0 :(得分:3)

Perl ApacheMQ 发送消息时遇到了同样的问题。 (Perl + Net-Stomp-0.45 + apache-activemq-5.8)

这只是一个小错误。 在此文件 harddisk \ apache-activemq-5.8 \ conf \ activemq.xml 中设置正确的 transportConnectors 非常重要。

<transportConnectors>
   <transportConnector name="stomp" uri="stomp://localhost:61616"/>
</transportConnectors>

之后它工作正常:D 有关详细信息:http://activemq.apache.org/stomp.html

也许EMS中有类似的文件。

答案 1 :(得分:0)

这是因为Stomp库从消息代理接收到无效(或无响应)。

尝试telnet到消息代理,看看它是否会说Stomp。