summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2010-05-05 14:22:25 +0000
committerGordon Sim <gsim@apache.org>2010-05-05 14:22:25 +0000
commit375ec81692fd7891cbc766bd86366143c985a3c6 (patch)
tree4cfa857572eed136a244cebf78b71fc7b0f38e0a
parent8c0153e035caa90758a6773493d5859716521e30 (diff)
downloadqpid-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.cpp1
-rw-r--r--cpp/src/qpid/client/amqp0_10/AddressResolution.cpp10
-rw-r--r--doc/book/src/Programming-In-Apache-Qpid.xml25
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>