我正在尝试从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之前我需要做哪些设置?
答案 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。