ActiveMq と通信するために perl プロデューサーを試しています。私が試したコードを見つけてください。「* Net::STOMP::Client::IO::receive_data(): cannot sysread(): EOF」というエラーが表示されます **
エラーをデバッグした後$stomp->connect();
、この時点でこのエラーが発生した理由を教えてください... オンラインでこれに関する多くのヘルプを見つけることができません..
前もって感謝します
接続しようとしている URL に telnet で接続しようとしました。最初に接続され、最後に次のようなエラー メッセージが表示されます。
CacheEnabledSizePrefixDisabled MaxInactivityDurationInitalDelay'TcpNoDelayEnabledMaxInactivityDurationu0TightEncodingEnabledStackTraceEnabledPuTTY
Connection closed by foreign host.
これは、接続が閉じられていることを意味します。
これらは、エラーが疑われるブローカー ログです。
2012-12-07 14:44:12,021 | WARN | Transport Connection to: tcp://127.0.0.1:57404 failed: java.io.EOFException | org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ Transport: tcp:///127.0.0.1:57404@61616
2012-12-07 14:44:12,021 | WARN | Transport Connection to: tcp://127.0.0.1:57403 failed: java.io.EOFException | org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ Transport: tcp:///127.0.0.1:57403@61616
2012-12-07 14:44:12,024 | WARN | Transport Connection to: tcp://127.0.0.1:57405 failed: java.io.IOException: Unknown data type: 47 | org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ Transport: tcp:///127.0.0.1:57405@61616
2012-12-07 14:44:12,024 | WARN | Transport Connection to: tcp://127.0.0.1:57405 failed: org.apache.activemq.transport.InactivityIOException: Cannot send, channel has already failed: tcp://127.0.0.1:57405 | org.apache.activemq.broker.TransportConnection.Transport | Async Exception Handler
2012-12-07 16:08:55,045 | WARN | Transport Connection to: tcp://127.0.0.1:58008 failed: java.io.IOException: Unknown data type: 69 | org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ Transport: tcp:///127.0.0.1:58008@61616
2012-12-07 16:08:55,045 | WARN | Transport Connection to: tcp://127.0.0.1:58008 failed: org.apache.activemq.transport.InactivityIOException: Cannot send, channel has already failed: tcp://127.0.0.1:58008 | org.apache.activemq.broker.TransportConnection.Transport | Async Exception Handler
コード:
#! /usr/bin/perl
use strict;
use warnings;
use Net::STOMP::Client;
my $stomp = Net::STOMP::Client->new(uri => "tcp://$url:$port");
my $peer = $stomp->peer();
printf("connected to broker %s (IP %s), port %d\n",
$peer->host(), $peer->addr(), $peer->port());
$stomp->connect();
printf("speaking STOMP %s with server %s\n",
$stomp->version(), $stomp->server() || "UNKNOWN");
printf("session %s started\n", $stomp->session());
$stomp->disconnect();
printf("session ended\n");