AnyEvent::STOMP::Client - An event-based non-blocking STOMP 1.2 client based on AnyEvent and Object::Event.
use AnyEvent::STOMP::Client;
my $stomp_client = new AnyEvent::STOMP::Client()
$stomp_client->connect();
$stomp_client->on_connected(
sub {
my $self = shift;
$self->subscribe('/queue/test-destination');
$self->send(
'/queue/test-destination',
{'content-type' => 'text/plain',},
"Hello World!"
);
}
);
$stomp_client->on_message(
sub {
my ($self, $header, $body) = @_;
print "$body\n";
}
);
AnyEvent->condvar->recv;AnyEvent::STOMP::Client provides a STOMP (Simple Text Oriented Messaging Protocol) client. Thanks to AnyEvent, AnyEvent::STOMP::Client is completely non-blocking, by making extensive use of the AnyEvent::Handle and timers (and, under the hood, AnyEvent::Socket). Building on Object::Event, AnyEvent::STOMP::Client implements various events (e.g. the MESSAGE event, when a STOMP MESSAGE frame is received) and offers callbacks for these (e.g. on_message($callback)).
Create an instance of AnyEvent::STOMP::Client.
$host-
String, optional, defaults to
localhost. The host, where a STOMP-compatible message broker is running. $port-
Integer, optional, defaults to
61613. The TCP port we connect to. I.e. the port where the message broker instance is listening. $connect_headers-
Hash, optional, empty by default. May be used to add arbitrary headers to the STOMP
CONNECTframe. STOMP login headers would, for example, be supplied using this parameter. $tls_context-
Hash, optional, undef by default. May be used to supply a SSL/TLS context directly to
AnyEvent::Handle. See AnyEvent::TLS for documentation.
my $client = AnyEvent::STOMP::Client->new( '127.0.0.1', 61614, {'login' => 'guest', 'passcode' => 'guest', 'virtual-host' => 'foo'} );
Connect to the specified STOMP message broker. Croaks if you already established a connection.
Sends a DISCONNECT STOMP frame to the message broker (if we are still connected). Croaks, if you are trying to disconnect without actually being connected.
$ungraceful-
Boolean, defaults to 0. If the ungraceful option is set, then simply a
DISCONNECTSTOMP frame is sent and the connection state is considered to be disconnected without awaiting any response from the server. If, however, the option is not set, then a receipt is asked for and the connection is only considered to be no longer established upon receiving a receipt for theDISCONNECTframe.
Check whether we are still connected to the broker. May only be accurate if STOMP heart-beats are used.
Subscribe to a destination by sending a SUBSCRIBE STOMP frame to the message broker. Returns the subscription identifier.
$destination-
String, mandatory. The destination to which we want to subscribe to.
$ack_mode-
auto|client|client-individual, optional, defaults toauto. See the STOMP documentation for further information on acknowledgement modes. $additional_headers-
Used to pass arbitrary headers to the
SUBSCRIBESTOMP frame. Broker specific flow control parameters for example is what would want to supply here.
Unsubscribe from a destination by sending an UNSUBSCRIBE STOMP frame to the message broker.
$destination-
String, mandatory. The destination from which we want to unsubscribe.
$additional_headers-
Used to pass arbitrary headers to the
UNSUBSCRIBESTOMP frame.
Send a STOMP SEND frame to the message broker.
$destination-
String, mandatory. The destination to which to send the message to.
$header-
Hash, optional, empty by default. Arbitrary headers included in the
SENDframe. See the STOMP documentation for supported headers. $body-
String, optional, empty by default. The body of the message, according to the content-type specified in the header.
Send an ACK frame to acknowledge a received message.
$ack_id-
String, mandatory. Has to match the
ackheader of the message that is to be acknowledged. $transaction_id-
String, optional. A transaction identifier, if the
ACKis part of a transaction.
Send an NACK frame to NOT acknowledge a received message.
$ack_id-
String, mandatory. Has to match the
ackheader of the message that is to be nacked. $transaction_id-
String, optional. A transaction identifier, if the
NACKis part of a transaction.
Begin a STOMP transaction.
$transaction_id-
String, mandatory. A unique identifier for the transaction.
$additional_headers-
Hash, optional, empty by default. Used to pass arbitrary headers to the STOMP frame.
Commit a STOMP transaction.
$transaction_id-
String, mandatory. A unique identifier for the transaction.
$additional_headers-
Hash, optional, empty by default. Used to pass arbitrary headers to the STOMP frame.
Abort a STOMP transaction.
$transaction_id-
String, mandatory. A unique identifier for the transaction.
$additional_headers-
Hash, optional, empty by default. Used to pass arbitrary headers to the STOMP frame.
Disconnects and cleans up all callbacks. To be called when the client object is not used any more and should be cleaned up.
In order for the AnyEvent::STOMP::Client to be useful, callback subroutines can be registered for the following events:
Invoked when a CONNECTED frame is received. Parameters passed to the callback: $self, $header_hashref.
Invoked after having successfully disconnected from a broker. I.e. when a callback is registered for this event and the disconnect subroutine is called, then a receipt header is included in the DISCONNECT frame and the disconnected event is fired upon receiving the receipt for the DISCONNECT frame. Parameters passed to the callback: $self, $host, $port.
Invoked when either the on_error callback specified in the AnyEvent::Handle constructor is called, or when no more heartbeats arrive from the server. Parameters passed to the callback: $self, $host, $port, $error_message.
Invoked when the on_connect_error callback specified in the AnyEvent::Handle constructor is called. Parameters passed to the callback: $self, $host, $port.
Invoked when a STOMP frame is sent. Parameters passed to the callback: $self, $frame (the sent frame as string).
Invoked when a STOMP SEND command is sent. Parameters passed to the callback: $self, $frame (the sent frame as string).
Invoked when a STOMP ACK command is sent. Parameters passed to the callback: $self, $frame (the sent frame as string).
Invoked when a STOMP NACK command is sent. Parameters passed to the callback: $self, $frame (the sent frame as string).
Invoked when a STOMP frame is received (irrespective of the STOMP command). Parameters passed to the callback: $self, $command, $header_hashref, $body (may be undef, if the frame is not specified to contain a body).
Invoked when a MESSAGE frame is received. Optionally, a $destination parameter may be specified, resulting in the callback only being invoked, when a MESSAGE is received from that specific destination. Parameters passed to the callback: $self, $header_hashref, $body.
Invoked when a RECEIPT frame is received. Parameters passed to the callback: $self, $header_hashref.
Invoked when an ERROR frame is received. Parameters passed to the callback: $self, $host, $port, $error_message.
Invoked after having successfully subscribed to a destination. Works behind the scenes like the on_disconnected described above. Parameters passed to the callback: $self, $destination.
Invoked after having successfully unsubscribed to a destination. Works behind the scenes like the on_disconnected described above. Parameters passed to the callback: $self, $destination.
To unregister a previously registered callback.
$guard-
The return value of one of the above on_<xyz> subroutines, identifying the registered callback.
Currently only the most recent version of STOMP, i.e. 1.2, is supported.
AnyEvent, AnyEvent::Handle, AnyEvent::TLS, Object::Event, STOMP 1.2 Documentation
Raphael Seebacher, <raphael@seebachers.ch>
Copyright (C) 2013 by Open Systems AG. All rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.