~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/rabbitmq/docs/index.rst

  • Committer: Mark Atwood
  • Date: 2011-12-28 02:50:31 UTC
  • Revision ID: me@mark.atwood.name-20111228025031-eh4h1zwv4ig88g0i
fix tests/r/basic.result

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
.. _rabbitmq_plugin:
 
2
 
 
3
RabbitMQ Integration
 
4
======================
 
5
 
 
6
It is possible to replicate transactions directly to a `RabbitMQ <http://www.rabbitmq.org>`_ server from drizzle, this could be used to create advanced replication solutions, to visualize data, or to build triggers. For example, `RabbitReplication <http://www.rabbitreplication.org>`_ has been built to consume the messages from rabbitmq, transform them, and persist the data in drizzle, mysql, many nosql stores and even replicating directly to websockets for data visualization.
 
7
 
 
8
Loading
 
9
-------
 
10
 
 
11
To load this plugin, start :program:`drizzled` with::
 
12
 
 
13
   --plugin-add=rabbitmq
 
14
 
 
15
Loading the plugin may not enable or configure it.  See the plugin's
 
16
:ref:`rabbitmq_configuration` and :ref:`rabbitmq_variables`.
 
17
 
 
18
.. seealso:: :ref:`drizzled_plugin_options` for more information about adding and removing plugins.
 
19
 
 
20
.. _rabbitmq_configuration:
 
21
 
 
22
Configuration
 
23
-------------
 
24
 
 
25
These command line options configure the plugin when :program:`drizzled`
 
26
is started.  See :ref:`command_line_options` for more information about specifying
 
27
command line options.
 
28
 
 
29
.. program:: drizzled
 
30
 
 
31
.. option:: --rabbitmq.exchange ARG
 
32
 
 
33
   :Default: ReplicationExchange
 
34
   :Variable: :ref:`rabbitmq_exchange <rabbitmq_exchange>`
 
35
 
 
36
   Name of RabbitMQ exchange to publish to
 
37
 
 
38
.. option:: --rabbitmq.host ARG
 
39
 
 
40
   :Default: localhost
 
41
   :Variable: :ref:`rabbitmq_host <rabbitmq_host>`
 
42
 
 
43
   Host name to connect to
 
44
 
 
45
.. option:: --rabbitmq.password ARG
 
46
 
 
47
   :Default: guest
 
48
   :Variable: :ref:`rabbitmq_password <rabbitmq_password>`
 
49
 
 
50
   RabbitMQ password
 
51
 
 
52
.. option:: --rabbitmq.port ARG
 
53
 
 
54
   :Default: 5672
 
55
   :Variable: :ref:`rabbitmq_port <rabbitmq_port>`
 
56
 
 
57
   Port to connect to
 
58
 
 
59
.. option:: --rabbitmq.routingkey ARG
 
60
 
 
61
   :Default: ReplicationRoutingKey
 
62
   :Variable: :ref:`rabbitmq_routingkey <rabbitmq_routingkey>`
 
63
 
 
64
   Name of RabbitMQ routing key to use
 
65
 
 
66
.. option:: --rabbitmq.use-replicator ARG
 
67
 
 
68
   :Default: default_replicator
 
69
   :Variable:
 
70
 
 
71
   Name of the replicator plugin to use (default='default_replicator')
 
72
 
 
73
.. option:: --rabbitmq.username ARG
 
74
 
 
75
   :Default: guest
 
76
   :Variable: :ref:`rabbitmq_username <rabbitmq_username>`
 
77
 
 
78
   RabbitMQ username
 
79
 
 
80
.. option:: --rabbitmq.virtualhost ARG
 
81
 
 
82
   :Default: /
 
83
   :Variable: :ref:`rabbitmq_virtualhost <rabbitmq_virtualhost>`
 
84
 
 
85
   RabbitMQ virtualhost
 
86
 
 
87
.. _rabbitmq_variables:
 
88
 
 
89
Variables
 
90
---------
 
91
 
 
92
These variables show the running configuration of the plugin.
 
93
See `variables` for more information about querying and setting variables.
 
94
 
 
95
.. _rabbitmq_exchange:
 
96
 
 
97
* ``rabbitmq_exchange``
 
98
 
 
99
   :Scope: Global
 
100
   :Dynamic: No
 
101
   :Option: :option:`--rabbitmq.exchange`
 
102
 
 
103
   Name of RabbitMQ exchange to publish to
 
104
 
 
105
.. _rabbitmq_host:
 
106
 
 
107
* ``rabbitmq_host``
 
108
 
 
109
   :Scope: Global
 
110
   :Dynamic: No
 
111
   :Option: :option:`--rabbitmq.host`
 
112
 
 
113
   Host name to connect to
 
114
 
 
115
.. _rabbitmq_password:
 
116
 
 
117
* ``rabbitmq_password``
 
118
 
 
119
   :Scope: Global
 
120
   :Dynamic: No
 
121
   :Option: :option:`--rabbitmq.password`
 
122
 
 
123
   RabbitMQ password
 
124
 
 
125
.. _rabbitmq_port:
 
126
 
 
127
* ``rabbitmq_port``
 
128
 
 
129
   :Scope: Global
 
130
   :Dynamic: No
 
131
   :Option: :option:`--rabbitmq.port`
 
132
 
 
133
   Port to connect to
 
134
 
 
135
.. _rabbitmq_routingkey:
 
136
 
 
137
* ``rabbitmq_routingkey``
 
138
 
 
139
   :Scope: Global
 
140
   :Dynamic: No
 
141
   :Option: :option:`--rabbitmq.routingkey`
 
142
 
 
143
   Name of RabbitMQ routing key to use
 
144
 
 
145
.. _rabbitmq_username:
 
146
 
 
147
* ``rabbitmq_username``
 
148
 
 
149
   :Scope: Global
 
150
   :Dynamic: No
 
151
   :Option: :option:`--rabbitmq.username`
 
152
 
 
153
   RabbitMQ username
 
154
 
 
155
.. _rabbitmq_virtualhost:
 
156
 
 
157
* ``rabbitmq_virtualhost``
 
158
 
 
159
   :Scope: Global
 
160
   :Dynamic: No
 
161
   :Option: :option:`--rabbitmq.virtualhost`
 
162
 
 
163
   RabbitMQ virtualhost
 
164
 
 
165
.. _rabbitmq_examples:
 
166
 
 
167
Examples
 
168
--------
 
169
 
 
170
First install a recent version of RabbitMQ, then install librabbitmq, the C library for talking to the RabbitMQ server:
 
171
 
 
172
.. code-block:: bash
 
173
 
 
174
   $ hg clone http://hg.rabbitmq.com/rabbitmq-codegen/
 
175
   $ hg clone http://hg.rabbitmq.com/rabbitmq-c/
 
176
   $ cd rabbitmq-c
 
177
   $ autoreconf -f -i
 
178
   $ ./configure
 
179
   $ make
 
180
   $ make install
 
181
 
 
182
Now you probably need to rebuild Drizzle since the :program:`rabbitmq` plugin is not built if librabbitmq is not installed.
 
183
 
 
184
Finally, start :program:`drizzled` like:
 
185
 
 
186
.. code-block:: bash
 
187
 
 
188
   sbin/drizzled --plugin-add rabbitmq,default-replicator \
 
189
                 --rabbitmq.use-replicator default
 
190
 
 
191
To verify that it works, you can start a generic rabbitmq listener from librabbitmq:
 
192
 
 
193
.. code-block:: bash
 
194
 
 
195
   $ amqp_listen localhost 5672 ReplicationExchange ReplicationRoutingKey
 
196
 
 
197
And you should see something like this when you do an INSERT/CREATE/.. (just not a select) in your newly built Drizzle instance::
 
198
 
 
199
   Result 0
 
200
   Frame type 1, channel 1
 
201
   Method AMQP_BASIC_DELIVER_METHOD
 
202
   Delivery 1, exchange ReplicationExchange routingkey ReplicationRoutingKey
 
203
 
 
204
   00000000: 0A 17 08 01 10 87 36 18 : F0 FA D9 99 FA F1 A7 02  ......6.........
 
205
   00000010: 20 99 81 DA 99 FA F1 A7 : 02 12 40 08 01 10 F2 FA   .........@.....
 
206
   00000020: D9 99 FA F1 A7 02 18 FC : FA D9 99 FA F1 A7 02 2A  ...............*
 
207
   00000030: 17 0A 06 0A 01 62 12 01 : 61 12 06 08 04 12 02 69  .....b..a......i
 
208
   00000040: 64 12 05 08 01 12 01 74 : 32 11 08 01 10 01 1A 0B  d......t2.......
 
209
   00000050: 0A 01 32 0A 02 61 61 10 : 00 10 00 20 01 28 01     ..2..aa.... .(.
 
210
   0000005F:
 
211
 
 
212
Implementation Details
 
213
----------------------
 
214
 
 
215
* :program:`drizzled` will not sart if the rabbitmq server is not available.
 
216
* If the rabbitmq server goes away, the plugin will try to reconnect and resend the message 3 times, after that, the transaction is rolled back.
 
217
 
 
218
.. _rabbitmq_authors:
 
219
 
 
220
Authors
 
221
-------
 
222
 
 
223
Marcus Eriksson
 
224
 
 
225
.. _rabbitmq_version:
 
226
 
 
227
Version
 
228
-------
 
229
 
 
230
This documentation applies to **rabbitmq 0.1**.
 
231
 
 
232
To see which version of the plugin a Drizzle server is running, execute:
 
233
 
 
234
.. code-block:: mysql
 
235
 
 
236
   SELECT MODULE_VERSION FROM DATA_DICTIONARY.MODULES WHERE MODULE_NAME='rabbitmq'
 
237
 
 
238
Changelog
 
239
---------
 
240
 
 
241
v0.1
 
242
^^^^
 
243
* First release.