Last Value Queue with negative message counter
magegu Mar 4, 2012 1:56 PMhi guys,
I want to enusure that some items are only once in my queue so i set:
<address-setting match="io.testq"> <last-value-queue>true</last-value-queue> </address-setting>
when i'm adding two messages, and receive one one, but the message counter is always decremented by two:
the following code
ClientMessage message = session.createMessage(true);
SimpleString myUniqueID = new SimpleString(objId);
message.putStringProperty(Message.HDR_LAST_VALUE_NAME, myUniqueID);
message.getBodyBuffer().writeString("test");
producer.send(message);
ClientRequestor requestor = new ClientRequestor(session,
"jms.queue.hornetq.management");
ClientMessage newMessage = session.createMessage(false);
ManagementHelper.putAttribute(newMessage, ResourceNames.CORE_QUEUE
+ queueName, "messageCount");
ClientMessage reply = requestor.request(newMessage);
int count = Integer.parseInt(ManagementHelper.getResult(reply).toString());
System.out.println("There are " + count + " messages in " + queueName);
ClientMessage message2 = session.createMessage(true);
message2.putStringProperty(Message.HDR_LAST_VALUE_NAME, myUniqueID);
message2.getBodyBuffer().writeString("test2");
producer.send(message2);
reply = requestor.request(newMessage);
count = Integer.parseInt(ManagementHelper.getResult(reply).toString());
System.out.println("There are " + count + " messages in " + queueName);
consumer = session.createConsumer(queueName);
ClientMessage msgReceived = consumer.receive();
System.out.println("message = " + msgReceived.getBodyBuffer().readString());
msgReceived.acknowledge();
reply = requestor.request(newMessage);
count = Integer.parseInt(ManagementHelper.getResult(reply).toString());
System.out.println("There are " + count + " messages in " + queueName);
procuces the following output
There are 1 messages in last_value_queue There are 1 messages in last_value_queue message = test2 There are -1 messages in last_value_queue
is that a correct behaviour?