Hi all,
it seems to me that sending QMF methods to create a queue over-passes "cluster
error checking mechanism" (if a sole node detects an error, it preventive
leaves the cluster).
Having a simple C++ client to create a huge durable queue:
Connection connection("amqp:tcp:127.0.0.1:5672");
connection.open();
Session session = connection.createSession();
Sender sender = session.createSender("qmf.default.direct/broker");
Address responseQueue("#reply-queue; {create:always,
node:{x-declare:{auto-delete:true}}}");
Receiver receiver = session.createReceiver(responseQueue);
Message message;
Variant::Map content;
Variant::Map OID;
Variant::Map arguments;
Variant::Map properties;
properties["durable"] = "true";
properties["qpid.file_count"] = "3000";
arguments["type"] = "queue";
arguments["name"] = "HugeDurableQueue";
arguments["properties"] = properties;
OID["_object_name"] = "org.apache.qpid.broker:broker:amqp-broker";
content["_object_id"] = OID;
content["_method_name"] = "create";
content["_arguments"] = arguments;
encode(content, message);
message.setReplyTo(responseQueue);
message.setProperty("x-amqp-0-10.app-id", "qmf2");
message.setProperty("qmf.opcode", "_method_request");
message.setContentType("amqp/map");
sender.send(message, true);
and running the client to a clustered pair of brokers creates a durable queue
with 3000 files in its journal.
However, if one of the brokers (let say node1) has insufficient free disk
space, qpid on node1 shall shut down due to the "cluster error checking
mechanism". At least, that I see when I create the queue via qpid-config or
using proper address string and spout/drain.
But running the above QMF method leaves the cluster in state where node1 has
not have the queue created while node2 has it created - a substantial cluster
de-sync.
Did I do something wrong or is it a bug?
Thanks in advance for your answers.
Kind regards,
Pavel
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:[email protected]