Difference between revisions of "Plugin:AMQP"
(→Synopsis: Add "ExchangeType" to "Publish" blocks.) |
(→Routing: New section.) |
||
Line 42: | Line 42: | ||
</Subscribe> | </Subscribe> | ||
</Plugin> | </Plugin> | ||
+ | |||
+ | == Routing == | ||
+ | |||
+ | AMQP uses three components to deliver messages from a publisher to a subscriber: ''Exchanges'' are the place where publishers post their messages; ''Queues'' are the place from where subscribers receive messages. An ''exchange'' and a ''queue'' may be connected with a ''binding'', meaning that messages may be routed from the exchange to the queue. | ||
+ | |||
+ | Which messages are sent to which ''queue'' depends on the ''type'' of the ''exchange'' and the ''binding''. | ||
+ | * A ''fanout'' exchange sends messages too all queues bound to it. | ||
+ | * A ''direct'' exchange compares the ''routing keys'' of the message and the binding and sends the message to the appropriate queue only if they are identical. | ||
+ | * A ''topic'' exchange compares the ''routing keys'' of the message and the binding and allows for wildcards (placeholders) in the binding's ''routing key''. | ||
+ | * A ''headers'' exchange matches ''header fields'' attached to a message to make a routing decision. Currently the ''AMQP plugin'' doesn't support the creation of header fields and can't create appropriate bindings automatically. | ||
== Dependencies == | == Dependencies == |
Revision as of 08:55, 9 August 2010
AMQP plugin | |
---|---|
Type: | write |
Callbacks: | config, shutdown, write |
Status: | in development |
First version: | 5.0 |
Copyright: | 2009 Sebastien Pahl 2010 Florian Forster |
License: | MIT license |
Manpage: | collectd.conf(5) |
List of Plugins |
The AMQP plugin transmits or receives values collected by collectd via the Advanced Message Queuing Protocol (AMQP). Data is sent to or received from a "message broker" – a daemon relaying messages. The values are encoded in either the plain text protocol or JSON, though only the plain-text protocol can be parsed by the plugin at the moment. Messages can be sent in either persistent (guaranteed delivery) or transient (higher efficiency but values may be lost) delivery mode.
Contents
Synopsis
<Plugin "amqp"> # Send values to an AMQP broker <Publish "some_name"> Host "localhost" Port "5672" VHost "/" User "guest" Password "guest" Exchange "amq.fanout" # ExchangeType "fanout" # RoutingKey "collectd" # Persistent false # Format "command" # StoreRates false </Publish> # Receive values from an AMQP broker (work in progress) <Subscribe "some_name"> Host "localhost" Port "5672" VHost "/" User "guest" Password "guest" Exchange "amq.fanout" # ExchangeType "fanout" # Queue "queue_name" # RoutingKey "collectd.#" </Subscribe> </Plugin>
Routing
AMQP uses three components to deliver messages from a publisher to a subscriber: Exchanges are the place where publishers post their messages; Queues are the place from where subscribers receive messages. An exchange and a queue may be connected with a binding, meaning that messages may be routed from the exchange to the queue.
Which messages are sent to which queue depends on the type of the exchange and the binding.
- A fanout exchange sends messages too all queues bound to it.
- A direct exchange compares the routing keys of the message and the binding and sends the message to the appropriate queue only if they are identical.
- A topic exchange compares the routing keys of the message and the binding and allows for wildcards (placeholders) in the binding's routing key.
- A headers exchange matches header fields attached to a message to make a routing decision. Currently the AMQP plugin doesn't support the creation of header fields and can't create appropriate bindings automatically.
Dependencies
See also
- The RabbitMQ homepage
- The sp/amqp branch in octo's repository on Github.
- The amqp branch in Sebastien's repository on Github.