diff options
| author | Gordon Sim <gsim@apache.org> | 2010-05-05 14:22:25 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2010-05-05 14:22:25 +0000 |
| commit | 375ec81692fd7891cbc766bd86366143c985a3c6 (patch) | |
| tree | 4cfa857572eed136a244cebf78b71fc7b0f38e0a | |
| parent | 8c0153e035caa90758a6773493d5859716521e30 (diff) | |
| download | qpid-python-375ec81692fd7891cbc766bd86366143c985a3c6.tar.gz | |
Allow empty subject for direct- and xml- exchanges
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@941306 13f79535-47bb-0310-9956-ffa450edef68
| -rw-r--r-- | cpp/examples/messaging/spout.cpp | 1 | ||||
| -rw-r--r-- | cpp/src/qpid/client/amqp0_10/AddressResolution.cpp | 10 | ||||
| -rw-r--r-- | doc/book/src/Programming-In-Apache-Qpid.xml | 25 |
3 files changed, 19 insertions, 17 deletions
diff --git a/cpp/examples/messaging/spout.cpp b/cpp/examples/messaging/spout.cpp index 275ca416bc..05d66f60e6 100644 --- a/cpp/examples/messaging/spout.cpp +++ b/cpp/examples/messaging/spout.cpp @@ -160,7 +160,6 @@ int main(int argc, char** argv) spoutid << id << ":" << count; message.getProperties()["spout-id"] = spoutid.str(); sender.send(message); - std::cout << "Sent " << (count+1) << " of " << options.count << " messages" <<std::endl; } connection.close(); return 0; diff --git a/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp b/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp index 146d34932a..b819906677 100644 --- a/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp +++ b/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp @@ -127,7 +127,7 @@ const std::string FANOUT_EXCHANGE("fanout"); const std::string DIRECT_EXCHANGE("direct"); const std::string HEADERS_EXCHANGE("headers"); const std::string XML_EXCHANGE("xml"); -const std::string WILDCARD_ANY("*"); +const std::string WILDCARD_ANY("#"); const Verifier verifier; } @@ -529,8 +529,12 @@ void Subscription::bindAll() Binding b(name, queue, "match-all"); b.arguments.setString("x-match", "all"); bindings.push_back(b); - } else { //E.g. direct and xml - throw ResolutionError(QPID_MSG("Cannot create binding to match all messages for exchange of type " << actualType)); + } else if (actualType == XML_EXCHANGE) { + Binding b(name, queue, EMPTY_STRING); + b.arguments.setString("xquery", "true()"); + bindings.push_back(b); + } else { + add(name, EMPTY_STRING); } } diff --git a/doc/book/src/Programming-In-Apache-Qpid.xml b/doc/book/src/Programming-In-Apache-Qpid.xml index cb1b07d183..c874e68199 100644 --- a/doc/book/src/Programming-In-Apache-Qpid.xml +++ b/doc/book/src/Programming-In-Apache-Qpid.xml @@ -1703,13 +1703,9 @@ else </listitem> <listitem> <para> - A source address that resolves to a direct exchange must - either contain a subject or must include a value for the - x-bindings option in the link properties. This is because - there is no way to receive all messages sent to an - exchange of that type. The subject specified is used as - the binding key (this means it must match the message - subject exactly). + For a direct exchange, the subject is used as the binding + key. If no subject is specified an empty string is used as + the binding key. </para> </listitem> <listitem> @@ -1735,12 +1731,15 @@ else matches any message with that value for qpid.subject. Again this means that only messages whose subject exactly match that specified in the source address - are received. For more control the x-bindings element in - the link properties must be used. A source address that - resolves to the XML exchange must contain either a subject - or an x-bindings element in the link properties as there - is no way at present to receive any message regardless of - routing key. + are received. If no subject is specified then the empty + string is used as the binding key with an xquery that will + match any message (this means that only messages with an + empty string as the routing key will be received). For more + control the x-bindings element in the link properties must + be used. A source address that resolves to the XML + exchange must contain either a subject or an x-bindings + element in the link properties as there is no way at + present to receive any message regardless of routing key. </para> </listitem> </itemizedlist> |
