我正在尝试使用 Perl 的 Net::Stomp 向 Active MQ 主题发送消息。另一方面,Java 客户端监视主题并从中获取消息。Active MQ 基于 Spring 框架,我在 Spring config.xml 中定义了以下内容
<amq:transportConnectors>
<amq:transportConnector name="openwire" uri="tcp://localhost:61616" />
<amq:transportConnector name="stomp" uri="stomp://localhost:61613" />
</amq:transportConnectors>
<!-- ActiveMQ destinations to use for RTlog Messages -->
<amq:topic id="rTlogDest" physicalName="RTlogTopic" name="RTlogTopic"/>
从 Perl 发送的消息根本没有被另一端的 Java 客户端接收。perl 代码如下所示。有什么不对吗?
use Net::Stomp;
my $stomp = Net::Stomp->new({hostname => 'localhost', port => '61613'});
$stomp->connect({login => 'admin', passcode => 'password'});
#$stomp->send({destination => 'RTlogTopic', body => 'test message'});
$frame = Net::Stomp::Frame->new(
{ command => 'SEND',
headers => { 'destination' => 'RTlogTopic',
'timestamp' => time
},
body => 'test message' } );
$stomp->send_frame($frame);
$stomp->disconnect;
我也使用过该$stomp->send
方法(上面已注释掉),但它也不起作用。然后我在某处读到 STOMP 需要对消息进行构图和发送,因此我对消息进行了构图。MQ Java 侦听器适用于通过 TCP(来自其他 java 客户端)进入端口 61616 的消息,但我无法通过 61613(多个消息生产者)使其适用于 Perl。我搜索了一下,发现很多人都让它在 PHP 到 Java 上工作,但没有一个 Perl 到 Java 的例子。是否有不同的方式需要在 Java 监视器端(消费者)处理 Stomp 消息或通常的 onMessage 实现(如 TCP)应该工作?