----- Original Message ----- > On 12/12/2011 05:53 PM, William Henry wrote: > > Hi all, > > > > I have been very confused about the addressing and the mapping that > > we have (incompletely) defined as part of the documentation. I'm > > told that there is no implicit magic but there is some decision > > making going internally to determine what an address means. So > > for example if there is a queue called 'test', without any > > bindings. but I run drain and spout on test, some things > > automatically happen and I get the messages. > > > > So I was wondering what would happen if I had a queue and an > > exchange with the same name? > > > > So I tried something: > > qpid-config add queue william > > qpid-config add queue henry > > qpid-config add exchange direct william > > qpid-config add exchange direct henry > > qpid-config bind william henry > > qpid-config bind henry william > > ./drain -f -c 100 william > > > > qpid isn't sure what to do. Fair enough!: > > Ambiguous address, please specify queue or topic as node type > > > > (But it means that someone could do something like this dynamically > > and cause issues) > > To some extent that is always going to be the case. I could delete > and > recreate the node you are using and change the behaviour. I took the > view that it is better to be explicit about ambiguity. In general my > advice would be to avoid having queues and exchanges using the same > name. > > > Okay so what about: > > ./drain -f -c 100 william/henry > > Ambiguous address, please specify queue or topic as node type > > > > How about: > > ./drain -f -c 100 henry/william; > > Ambiguous address, please specify queue or topic as node type > > > > Wait those aren't actually ambiguous. > > They are. In both cases the named node could refer to either the > exchange or the queue. E.g. in the first case, do you want to pull > messages from the william queue or from the william exchange? > > > But actually they are. An address isn't really an exchange or a > > queue I'm told. However we do map an address to a queue or an > > exchange if we feel like it (I'm being flippant here - I mean > > there is some implicit mapping if it's not ambiguous). So I can > > create a queue that maps to an address very conveniently because > > of some convenient mapping rule that happens implicitly. How is > > that happening? > > > > It's these implicit mapping rules that are confusing. Where are > > these rules defined? > > Section 2.16. - The AMQP 0-10 mapping - of the Programming Guide: > > > http://qpid.apache.org/books/0.12/Programming-In-Apache-Qpid/html/ch02s16.html > > There are also a couple of examples in the section introducing > addresses > (2.4) showing that the broker entity referred to by the address > influences the messaging patterns. > > > Why is henry/william or william/henry ambiguous? > > See above. It's because you have both a queue and an exchange of the > same name in each case.
Yep that and a chat with Ted yesterday helped. I had thought that (from previous conversations with people that what was before (left of) the '/' was always an exchange. And that the right hand side was an address which could implicitly be a queue. And that has been the cause of my confusion for a long long time. I had not seen the content of the above URL before. > > > Why don't we document this stuff better? > > A combination of reasons. What makes perfect sense to the author may > not > make sense to (all) readers; we need feedback that we can act on. It > takes time to improve things and that time isn't always easy to find > in > busy schedules. I think there are still some structural/procedural > issues that make fixing documentation more daunting than it should > be. > > We certainly want to do a better job, so any suggestions & > contributions > are welcome. > > > Why do we have examples that imply that an address maps to a queue? > > An address *can* refer to a queue. Thanks Gordon this was useful. William > > > --------------------------------------------------------------------- > Apache Qpid - AMQP Messaging Implementation > Project: http://qpid.apache.org > Use/Interact: mailto:[email protected] > > --------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:[email protected]
