Browse Source

Started writing the routing userguide

Ask Solem 15 years ago
parent
commit
5687de2263
1 changed files with 79 additions and 0 deletions
  1. 79 0
      docs/userguide/routing.rst

+ 79 - 0
docs/userguide/routing.rst

@@ -0,0 +1,79 @@
+===============
+ Routing Tasks
+===============
+
+**NOTE** This document refers to functionality only available in brokers
+using AMQP. Other brokers may implement some functionality, see their
+respective documenation for more information, or contact the `mailinglist`_.
+
+.. _`mailinglist`: http://groups.google.com/group/celery-users
+
+AMQP Primer
+===========
+
+Exchanges, queues and routing keys.
+-----------------------------------
+TODO Mindblowing one-line simple explanation here. TODO
+
+Exchange type
+-------------
+
+The exchange type defines how the messages are routed through the exchange.
+The exchanges defined in the standard is ``direct``, ``topic``, ``fanout`` and
+``headers``. Also non-standard exchange types available as plugins to RabbitMQ, like
+the last value cache plug-in.
+
+
+Consumers and Producers
+-----------------------
+TODO
+
+Related API commands
+-------------------------
+
+* exchange.declare(exchange_name, type, passive, durable, auto_delete, internal)
+
+Declares an exchange by name.
+
+    * ``passive`` means the exchange won't be created, but you can use this to
+      check if the exchange already exists.
+
+    * Durable exchanges are persistent. I.e. they survive a broker restart.
+
+    * ``auto_delete`` means the queue will be deleted by the broker when there
+      are no more queues using it.
+
+* queue.declare(queue_name, passive, durable, exclusive, auto_delete)
+
+Declares a queue by name.
+
+    * exclusive queues can only be consumed from by the current connection.
+      implies ``auto_delete``.
+
+* queue.bind(queue_name, exchange_name, routing_key)
+
+Binds a queue to an exchange with a routing key.
+Unbound queues will not receive messages, so this is necessary.
+
+* queue.delete(name, if_unused, if_empty)
+
+Deletes a queue and its binding.
+
+* exchange.delete(name, if_unused)
+
+Deletes an exchange.
+
+**NOTE**: Declaring does not necessarily mean "create". When you declare you
+*assert* that the entity exists and it is operable. There is no rule as to
+whom should initially create the exchange/queue/binding, whether consumer
+or producer.  Usually the first one to need it will create it.
+
+
+Hands-on with the API
+---------------------
+
+Celery comes with a tool called ``camqadm`` (short for celery AMQP admin).
+It's used for simple admnistration tasks like deleting queues/exchanges,
+purging queues and creating queue entities. In short it's for simple command
+line access to the AMQP API.
+