error message:
Error: Password file read access must be restricted: /opt/activemq/conf/jmx.password
add my user name to the files
>vi /opt/activemq/conf/jmx.password
>vi /opt/activemq/conf/jmx.access
>sudo chmod 600 /opt/activemq/conf/jmx.access
>sudo chmod 600 /opt/activemq/conf/jmx.password
test if it is work
>netstat -an|grep 61616
access the web console
http://localhost:8161/admin/
I need to start the stomp mode.
>/etc/init.d/activemq stop
>cd /opt/activemq
>bin/activemq console xbean:conf/activemq-stomp.xml
2. Install Perl client API
>cpan
cpan>install Net::Stomp
Net::Stomp is a streaming Text Orientated Messaging Protocol Client
Add a sample queue 'foo' to our activemq.
Below is the example that how to send the message via perl client:
# send a message to the queue 'foo'
use Net::Stomp;
my $stomp = Net::Stomp->new( { hostname => 'localhost', port => '61613' } );
$stomp->connect(
#{ login => 'hello', passcode => 'there' }
);
$stomp->send(
{ destination => '/queue/foo', body => '<userId>sillycat</userId><message>test message</message>' } );
$stomp->disconnect;
Get the message from the queue:
# subscribe to messages from the queue 'foo'
use Net::Stomp;
my $stomp = Net::Stomp->new( { hostname => 'localhost', port => '61613' } );
$stomp->connect(
#{ login => 'hello', passcode => 'there' }
);
$stomp->subscribe(
{ destination => '/queue/foo',
'ack' => 'client',
'activemq.prefetchSize' => 1
}
);
while (1) {
my $frame = $stomp->receive_frame;
#warn $frame->body; # do something here
$message = $frame->body;
if($message){
print $message;
$stomp->ack( { frame => $frame } );
last;
}
}
$stomp->disconnect;
other methods:
# write your own frame
#my $frame = Net::Stomp::Frame->new(
# { command => $command, headers => $conf, body => $body } );
#$self->send_frame($frame);
# connect with failover supporting similar URI to ActiveMQ
#$stomp = Net::Stomp->new({ failover => "failover://tcp://primary:61616" });
# "?randomize=..." and other parameters are ignored currently
#$stomp = Net::Stomp->new({ failover => "failover:(tcp://primary:61616,tcp://secondary:61616)?randomize=false" });
# Or in a more natural perl way
#$stomp = Net::Stomp->new({ hosts => [
# { hostname => 'primary', port => 61616 },
# { hostname => 'secondary', port => 61616 },
#] });