| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
|
|
|
|
|
|
package Message::Passing::STOMP; |
|
2
|
1
|
|
|
1
|
|
1195
|
use Moose (); |
|
|
0
|
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
3
|
|
|
|
|
|
|
use namespace::autoclean; |
|
4
|
|
|
|
|
|
|
|
|
5
|
|
|
|
|
|
|
our $VERSION = "0.006"; |
|
6
|
|
|
|
|
|
|
$VERSION = eval $VERSION; |
|
7
|
|
|
|
|
|
|
|
|
8
|
|
|
|
|
|
|
1; |
|
9
|
|
|
|
|
|
|
|
|
10
|
|
|
|
|
|
|
=head1 NAME |
|
11
|
|
|
|
|
|
|
|
|
12
|
|
|
|
|
|
|
Message::Passing::STOMP - input and output messages to STOMP. |
|
13
|
|
|
|
|
|
|
|
|
14
|
|
|
|
|
|
|
=head1 SYNOPSIS |
|
15
|
|
|
|
|
|
|
|
|
16
|
|
|
|
|
|
|
# Terminal 1: |
|
17
|
|
|
|
|
|
|
$ message-pass --input STDIN --output STOMP --output_options \ |
|
18
|
|
|
|
|
|
|
'{"destination":"/queue/foo","hostname":"localhost","port":"6163","username":"guest","password":"guest"}' |
|
19
|
|
|
|
|
|
|
{"data":{"some":"data"},"@metadata":"value"} |
|
20
|
|
|
|
|
|
|
|
|
21
|
|
|
|
|
|
|
# Terminal 2: |
|
22
|
|
|
|
|
|
|
$ message-pass --output STDOUT --input STOMP --input_options \ |
|
23
|
|
|
|
|
|
|
'{"destination":"/queue/foo","hostname":"localhost","port":"6163","username":"guest","password":"guest"}' |
|
24
|
|
|
|
|
|
|
{"data":{"some":"data"},"@metadata":"value"} |
|
25
|
|
|
|
|
|
|
|
|
26
|
|
|
|
|
|
|
=head1 DESCRIPTION |
|
27
|
|
|
|
|
|
|
|
|
28
|
|
|
|
|
|
|
An L<STOMP|http://stomp.github.com/> transport for L<Message::Passing>. |
|
29
|
|
|
|
|
|
|
|
|
30
|
|
|
|
|
|
|
L<STOMP|http://stomp.github.com/> is a simple and well supported messaging protocol, with clients in |
|
31
|
|
|
|
|
|
|
many languages. |
|
32
|
|
|
|
|
|
|
|
|
33
|
|
|
|
|
|
|
This is a simple adaptor to allow you to send or receive STOMP messages |
|
34
|
|
|
|
|
|
|
|
|
35
|
|
|
|
|
|
|
=head1 QUEUES AND TOPICS |
|
36
|
|
|
|
|
|
|
|
|
37
|
|
|
|
|
|
|
STOMP does not specify the semantics for message destinations or subscriptions (other than |
|
38
|
|
|
|
|
|
|
that they are a string), however most common STOMP servers (including ActiveMQ and RabbitMQ) |
|
39
|
|
|
|
|
|
|
expect a string matching /queue/name or /topic/name. |
|
40
|
|
|
|
|
|
|
|
|
41
|
|
|
|
|
|
|
Messages published to a destination prefixed by /queue/ are queued up, until a subscriber connects, |
|
42
|
|
|
|
|
|
|
at which point they are delivered. If multiple subscribers connect then the messages are distributed |
|
43
|
|
|
|
|
|
|
between the subscribers (i.e. each subscriber sees a portion of the messages). |
|
44
|
|
|
|
|
|
|
|
|
45
|
|
|
|
|
|
|
Messages published to a destination prefixed by /topic/ are copied to all connected subscribers, |
|
46
|
|
|
|
|
|
|
however if there are no subscribers currently, they are discarded, rather than being queued up. |
|
47
|
|
|
|
|
|
|
|
|
48
|
|
|
|
|
|
|
=head1 STOMP SERVERS |
|
49
|
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
There are a number of message brokers which will communicate with STOMP clients, the main ones |
|
51
|
|
|
|
|
|
|
being: |
|
52
|
|
|
|
|
|
|
|
|
53
|
|
|
|
|
|
|
=head2 RabbitMQ |
|
54
|
|
|
|
|
|
|
|
|
55
|
|
|
|
|
|
|
L<RabbitMQ|http://www.rabbitmq.com/> has L<a STOMP plugin|http://www.rabbitmq.com/stomp.html>. |
|
56
|
|
|
|
|
|
|
|
|
57
|
|
|
|
|
|
|
=head2 ActiveMQ |
|
58
|
|
|
|
|
|
|
|
|
59
|
|
|
|
|
|
|
L<ActiveMQ|http://activemq.apache.org/> has L<a STOMP plugin|http://activemq.apache.org/stomp.html>. |
|
60
|
|
|
|
|
|
|
|
|
61
|
|
|
|
|
|
|
=head1 SEE ALSO |
|
62
|
|
|
|
|
|
|
|
|
63
|
|
|
|
|
|
|
=over |
|
64
|
|
|
|
|
|
|
|
|
65
|
|
|
|
|
|
|
=item L<http://stomp.github.com/> - STOMP protocol documentation |
|
66
|
|
|
|
|
|
|
|
|
67
|
|
|
|
|
|
|
=item L<Message::Passing::Output::STOMP> |
|
68
|
|
|
|
|
|
|
|
|
69
|
|
|
|
|
|
|
=item L<Message::Passing::Input::STOMP> |
|
70
|
|
|
|
|
|
|
|
|
71
|
|
|
|
|
|
|
=item L<Message::Passing> |
|
72
|
|
|
|
|
|
|
|
|
73
|
|
|
|
|
|
|
=item L<AnyEvent::STOMP> |
|
74
|
|
|
|
|
|
|
|
|
75
|
|
|
|
|
|
|
=back |
|
76
|
|
|
|
|
|
|
|
|
77
|
|
|
|
|
|
|
=head1 AUTHOR |
|
78
|
|
|
|
|
|
|
|
|
79
|
|
|
|
|
|
|
Tomas (t0m) Doran <bobtfish@bobtfish.net> |
|
80
|
|
|
|
|
|
|
|
|
81
|
|
|
|
|
|
|
=head1 COPYRIGHT |
|
82
|
|
|
|
|
|
|
|
|
83
|
|
|
|
|
|
|
Copyright The above mentioned AUTHOR 2012. |
|
84
|
|
|
|
|
|
|
|
|
85
|
|
|
|
|
|
|
=head1 LICENSE |
|
86
|
|
|
|
|
|
|
|
|
87
|
|
|
|
|
|
|
GNU Affero General Public License, Version 3 |
|
88
|
|
|
|
|
|
|
|
|
89
|
|
|
|
|
|
|
If you feel this is too restrictive to be able to use this software, |
|
90
|
|
|
|
|
|
|
please talk to us as we'd be willing to consider re-licensing under |
|
91
|
|
|
|
|
|
|
less restrictive terms. |
|
92
|
|
|
|
|
|
|
|
|
93
|
|
|
|
|
|
|
=cut |
|
94
|
|
|
|
|
|
|
|
|
95
|
|
|
|
|
|
|
1; |
|
96
|
|
|
|
|
|
|
|