summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/Queue.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid/broker/Queue.cpp')
-rw-r--r--cpp/src/qpid/broker/Queue.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/cpp/src/qpid/broker/Queue.cpp b/cpp/src/qpid/broker/Queue.cpp
index 22659ec26c..4880dda553 100644
--- a/cpp/src/qpid/broker/Queue.cpp
+++ b/cpp/src/qpid/broker/Queue.cpp
@@ -61,6 +61,7 @@ const std::string qpidNoLocal("no-local");
const std::string qpidTraceIdentity("qpid.trace.id");
const std::string qpidTraceExclude("qpid.trace.exclude");
const std::string qpidLastValueQueue("qpid.last_value_queue");
+const std::string qpidLastValueQueueNoAcquire("qpid.last_value_queue_no_acquire");
const std::string qpidPersistLastNode("qpid.persist_last_node");
const std::string qpidVQMatchProperty("qpid.LVQ_key");
}
@@ -79,6 +80,7 @@ Queue::Queue(const string& _name, bool _autodelete,
exclusive(0),
noLocal(false),
lastValueQueue(false),
+ lastValueQueueNoAcquire(false),
persistLastNode(false),
inLastNodeFailure(false),
persistenceId(0),
@@ -213,7 +215,7 @@ bool Queue::acquire(const QueuedMessage& msg) {
|| (lastValueQueue && (i->position == msg.position) &&
msg.payload.get() == checkLvqReplace(*i).payload.get()) ) {
- clearLVQIndex(msg);
+ if (!lastValueQueueNoAcquire) clearLVQIndex(msg);
messages.erase(i);
QPID_LOG(debug, "Match found, acquire succeeded: " << i->position << " == " << msg.position);
return true;
@@ -673,6 +675,12 @@ void Queue::configure(const FieldTable& _settings)
lastValueQueue= _settings.get(qpidLastValueQueue);
if (lastValueQueue) QPID_LOG(debug, "Configured queue as Last Value Queue");
+ lastValueQueueNoAcquire = _settings.get(qpidLastValueQueueNoAcquire);
+ if (lastValueQueueNoAcquire){
+ QPID_LOG(debug, "Configured queue as Last Value Queue No Acquire");
+ lastValueQueue = lastValueQueueNoAcquire;
+ }
+
persistLastNode= _settings.get(qpidPersistLastNode);
if (persistLastNode) QPID_LOG(debug, "Configured queue to Persist data if cluster fails to one node");