[
https://issues.apache.org/jira/browse/ARTEMIS-2299?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
clebert suconic closed ARTEMIS-2299.
------------------------------------
Resolution: Fixed
> Using redelivery-delay and LastValueQueues is not defined and leads to queue
> blockage
> -------------------------------------------------------------------------------------
>
> Key: ARTEMIS-2299
> URL: https://issues.apache.org/jira/browse/ARTEMIS-2299
> Project: ActiveMQ Artemis
> Issue Type: Bug
> Components: Broker
> Affects Versions: 2.7.0
> Reporter: Matthew Robson
> Priority: Major
> Time Spent: 20m
> Remaining Estimate: 0h
>
> Setting last-value-queue with redelivery options has no implemented logic. No
> retry occurs and ultimately the queue becomes blocked for on consumptions for
> all subsequent messages.
> {code:java}
> <address-setting match="jms.queue.TestQueue">
>
> <dead-letter-address>jms.queue.DLQ2</dead-letter-address>
> <expiry-address>jms.queue.ExpiryQueue</expiry-address>
> <redelivery-delay>1000</redelivery-delay>
> <max-delivery-attempts>50</max-delivery-attempts>
> <max-size-bytes>10485760</max-size-bytes>
> <page-size-bytes>2097152</page-size-bytes>
> <address-full-policy>PAGE</address-full-policy>
>
> <message-counter-history-day-limit>10</message-counter-history-day-limit>
> <last-value-queue>true</last-value-queue>
> <redistribution-delay>1000</redistribution-delay>
> </address-setting>
> {code}
> Test
> {code:java}
> @Test
> public void testMultipleRollback() throws Exception
> {
> AddressSettings qs = new AddressSettings();
> qs.setLastValueQueue(true);
> qs.setRedeliveryDelay(100);
> server.getAddressSettingsRepository().addMatch(address.toString(), qs);
> ClientProducer producer = clientSessionTxReceives.createProducer(address);
> ClientConsumer consumer = clientSessionTxReceives.createConsumer(qName1);
> SimpleString messageId1 = new SimpleString("SMID1");
> ClientMessage m1 = createTextMessage(clientSession, "m1");
> m1.putStringProperty(Message.HDR_LAST_VALUE_NAME, messageId1);
> producer.send(m1);
> clientSessionTxReceives.start();
> for (int i = 0; i < 10; i++)
> {
> ClientMessage m = consumer.receive(5000);
> Assert.assertNotNull(m);
> m.acknowledge();
> clientSessionTxReceives.rollback();
> }
> m1 = createTextMessage(clientSession, "m1");
> m1.putStringProperty(Message.HDR_LAST_VALUE_NAME, messageId1);
> producer.send(m1);
> ClientMessage m = consumer.receive(1000);
> Assert.assertNotNull(m);
> m.acknowledge();
> Assert.assertEquals(m.getBodyBuffer().readString(), "m1");
> Assert.assertNull(consumer.receiveImmediate());
> clientSessionTxReceives.commit();
> }
> {code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)