[rabbitmq-discuss] Exchanges, Routing, and AMQP

Ben Hood 0x6e6562 at gmail.com
Sat Nov 8 20:15:15 GMT 2008


On Sat, Nov 8, 2008 at 7:29 PM, Peter Silva <Peter.A.Silva at gmail.com> wrote:
> That's strange... maybe I'm just getting confused by
> a client code... Here is an example from the demo in py-amqplib...
>  ch.basic_publish(msg, EXCHANGE_NAME, routing_key=topic)
> the 'routing_key' in this api, afaict, is one of three keywords: topic,
> fanout, direct.   what is called exchange_type in the AMQP spec.

Are you referring to amqp_clock.py?

If so, I think that the topic is a the name of a string variable:

TOPIC_PATTERN = '%Y.%m.%d.%w.%H.%M' # Python datetime.strftime() pattern
topic = now.strftime(TOPIC_PATTERN)
ch.basic_publish(msg, EXCHANGE_NAME, routing_key=topic)

> If the key is a string, and the exchange_type is opaque to the producers,
> then that's cool.  So for my application.  An admin creates the exchange,
> the producers post to it using AHL's or file names as routing keys,
> oblivious to the routing method in use.
> That's OK?

Yes, that will work.

> The next thing is that I need to be able to define routing to output queues
> myself, (how the routing key is interpreted.) before the clients apply their
> routing info, so I can say, no... my client talibanitravel.com has no access
> to the weather ob from Kandahar airport, even if they say they want it.
> They are perhaps allowed the ob from Peshawar, Moscow and Montreal.   So
> data posted on the same exchange may or may not be allowed to be seen by
> some clients.   I do that today with routing tables, others would use acl's
> or capabilities.   per exchange permissions of some sort would work... do
> they exist?

No, there is no fine grained access restriction (as discussed in other
threads on this list).

> I guess that is a function outside of AMQP (not a protocol thing, but rather
> a broker function?)

Could be - again, a mechanism orthogonal to the protocol has been discussed.

>  I get the impression permissions/ACL's
> were something applied at the queue/exchange level.  Was there
> something granular enough to apply to individual messages sent to an
> exchange blocking posting to queues based on routing_key?

AFAIK something as fine grained as this has not yet been investigated in detail.


More information about the rabbitmq-discuss mailing list