1

我正在尝试将 EMS 消息从 Perl 发送到 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之前我需要做任何设置吗?

4

2 回答 2

3

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

这只是一个小错误。在此文件harddisk\apache-activemq-5.8\conf\activemq.xml 中设置正确的传输连接器很重要。

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

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

也许EMS中有类似的文件。

于 2013-06-25T09:34:14.917 回答
0

发生这种情况是因为 Stomp 库从消息代理收到无效(或没有)响应。

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

于 2013-06-13T07:55:25.257 回答