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
|
|
|
|
|
|
|
|