use of org.apache.activemq.broker.region.policy.RedeliveryPolicyMap in project activemq-artemis by apache.
the class BrokerRedeliveryTest method startBroker.
private void startBroker(boolean deleteMessages) throws Exception {
broker = new BrokerService();
broker.setSchedulerSupport(true);
RedeliveryPlugin redeliveryPlugin = new RedeliveryPlugin();
RedeliveryPolicy brokerRedeliveryPolicy = new RedeliveryPolicy();
brokerRedeliveryPolicy.setRedeliveryDelay(redeliveryDelayMillis);
brokerRedeliveryPolicy.setInitialRedeliveryDelay(initialRedeliveryDelayMillis);
brokerRedeliveryPolicy.setMaximumRedeliveries(maxBrokerRedeliveries);
RedeliveryPolicyMap redeliveryPolicyMap = new RedeliveryPolicyMap();
redeliveryPolicyMap.setDefaultEntry(brokerRedeliveryPolicy);
redeliveryPlugin.setRedeliveryPolicyMap(redeliveryPolicyMap);
broker.setPlugins(new BrokerPlugin[] { redeliveryPlugin });
if (deleteMessages) {
broker.setDeleteAllMessagesOnStartup(true);
}
broker.start();
}
use of org.apache.activemq.broker.region.policy.RedeliveryPolicyMap in project activemq-artemis by apache.
the class RedeliveryPluginTest method testInstallPluginValidation.
public void testInstallPluginValidation() throws Exception {
RedeliveryPolicyMap redeliveryPolicyMap = new RedeliveryPolicyMap();
RedeliveryPolicy defaultEntry = new RedeliveryPolicy();
defaultEntry.setInitialRedeliveryDelay(500);
redeliveryPolicyMap.setDefaultEntry(defaultEntry);
underTest.setRedeliveryPolicyMap(redeliveryPolicyMap);
final BrokerService brokerService = new BrokerService();
brokerService.setSchedulerSupport(false);
Broker broker = new ErrorBroker("hi") {
@Override
public BrokerService getBrokerService() {
return brokerService;
}
};
try {
underTest.installPlugin(broker);
fail("expect exception on no scheduler support");
} catch (Exception expected) {
LOG.info("expected: " + expected);
}
brokerService.setSchedulerSupport(true);
try {
underTest.installPlugin(broker);
fail("expect exception on small initial delay");
} catch (Exception expected) {
LOG.info("expected: " + expected);
}
defaultEntry.setInitialRedeliveryDelay(5000);
defaultEntry.setRedeliveryDelay(500);
brokerService.setSchedulerSupport(true);
try {
underTest.installPlugin(broker);
fail("expect exception on small redelivery delay");
} catch (Exception expected) {
LOG.info("expected: " + expected);
}
}
use of org.apache.activemq.broker.region.policy.RedeliveryPolicyMap in project activemq-artemis by apache.
the class RedeliveryPolicyTest method testRedeliveryPolicyPerDestination.
@Test
public void testRedeliveryPolicyPerDestination() throws Exception {
RedeliveryPolicy queuePolicy = new RedeliveryPolicy();
queuePolicy.setInitialRedeliveryDelay(0);
queuePolicy.setRedeliveryDelay(1000);
queuePolicy.setUseExponentialBackOff(false);
queuePolicy.setMaximumRedeliveries(2);
RedeliveryPolicy topicPolicy = new RedeliveryPolicy();
topicPolicy.setInitialRedeliveryDelay(0);
topicPolicy.setRedeliveryDelay(1000);
topicPolicy.setUseExponentialBackOff(false);
topicPolicy.setMaximumRedeliveries(3);
// Receive a message with the JMS API
RedeliveryPolicyMap map = connection.getRedeliveryPolicyMap();
map.put(new ActiveMQTopic(">"), topicPolicy);
map.put(new ActiveMQQueue(">"), queuePolicy);
connection.start();
Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
ActiveMQQueue queue = new ActiveMQQueue("TEST");
ActiveMQTopic topic = new ActiveMQTopic("TEST");
this.makeSureCoreQueueExist("TEST");
MessageProducer producer = session.createProducer(null);
MessageConsumer queueConsumer = session.createConsumer(queue);
MessageConsumer topicConsumer = session.createConsumer(topic);
// Send the messages
producer.send(queue, session.createTextMessage("1st"));
producer.send(queue, session.createTextMessage("2nd"));
producer.send(topic, session.createTextMessage("1st"));
producer.send(topic, session.createTextMessage("2nd"));
session.commit();
TextMessage m;
m = (TextMessage) queueConsumer.receive(100);
assertNotNull(m);
assertEquals("1st", m.getText());
m = (TextMessage) topicConsumer.receive(100);
assertNotNull(m);
assertEquals("1st", m.getText());
m = (TextMessage) queueConsumer.receive(100);
assertNotNull(m);
assertEquals("2nd", m.getText());
m = (TextMessage) topicConsumer.receive(100);
assertNotNull(m);
assertEquals("2nd", m.getText());
session.rollback();
m = (TextMessage) queueConsumer.receive(100);
assertNotNull("first immediate redelivery", m);
m = (TextMessage) topicConsumer.receive(100);
assertNotNull("first immediate redelivery", m);
session.rollback();
m = (TextMessage) queueConsumer.receive(100);
assertNull("second delivery delayed: " + m, m);
m = (TextMessage) topicConsumer.receive(100);
assertNull("second delivery delayed: " + m, m);
m = (TextMessage) queueConsumer.receive(2000);
assertNotNull(m);
assertEquals("1st", m.getText());
m = (TextMessage) topicConsumer.receive(2000);
assertNotNull(m);
assertEquals("1st", m.getText());
m = (TextMessage) queueConsumer.receive(100);
assertNotNull(m);
assertEquals("2nd", m.getText());
m = (TextMessage) topicConsumer.receive(100);
assertNotNull(m);
assertEquals("2nd", m.getText());
session.rollback();
m = (TextMessage) queueConsumer.receive(2000);
assertNotNull(m);
assertEquals("1st", m.getText());
m = (TextMessage) topicConsumer.receive(2000);
assertNotNull(m);
assertEquals("1st", m.getText());
m = (TextMessage) queueConsumer.receive(100);
assertNotNull(m);
assertEquals("2nd", m.getText());
m = (TextMessage) topicConsumer.receive(100);
assertNotNull(m);
assertEquals("2nd", m.getText());
session.rollback();
// No third attempt for the Queue consumer
m = (TextMessage) queueConsumer.receive(2000);
assertNull(m);
m = (TextMessage) topicConsumer.receive(2000);
assertNotNull(m);
assertEquals("1st", m.getText());
m = (TextMessage) queueConsumer.receive(100);
assertNull(m);
m = (TextMessage) topicConsumer.receive(100);
assertNotNull(m);
assertEquals("2nd", m.getText());
session.commit();
}
use of org.apache.activemq.broker.region.policy.RedeliveryPolicyMap in project activemq-artemis by apache.
the class RedeliveryPolicyTest method testRedeliveryPolicyPerDestination.
public void testRedeliveryPolicyPerDestination() throws Exception {
RedeliveryPolicy queuePolicy = new RedeliveryPolicy();
queuePolicy.setInitialRedeliveryDelay(0);
queuePolicy.setRedeliveryDelay(1000);
queuePolicy.setUseExponentialBackOff(false);
queuePolicy.setMaximumRedeliveries(2);
RedeliveryPolicy topicPolicy = new RedeliveryPolicy();
topicPolicy.setInitialRedeliveryDelay(0);
topicPolicy.setRedeliveryDelay(1000);
topicPolicy.setUseExponentialBackOff(false);
topicPolicy.setMaximumRedeliveries(3);
// Receive a message with the JMS API
RedeliveryPolicyMap map = connection.getRedeliveryPolicyMap();
map.put(new ActiveMQTopic(">"), topicPolicy);
map.put(new ActiveMQQueue(">"), queuePolicy);
connection.start();
Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
ActiveMQQueue queue = new ActiveMQQueue("TEST");
ActiveMQTopic topic = new ActiveMQTopic("TEST");
MessageProducer producer = session.createProducer(null);
MessageConsumer queueConsumer = session.createConsumer(queue);
MessageConsumer topicConsumer = session.createConsumer(topic);
// Send the messages
producer.send(queue, session.createTextMessage("1st"));
producer.send(queue, session.createTextMessage("2nd"));
producer.send(topic, session.createTextMessage("1st"));
producer.send(topic, session.createTextMessage("2nd"));
session.commit();
TextMessage m;
m = (TextMessage) queueConsumer.receive(100);
assertNotNull(m);
assertEquals("1st", m.getText());
m = (TextMessage) topicConsumer.receive(100);
assertNotNull(m);
assertEquals("1st", m.getText());
m = (TextMessage) queueConsumer.receive(100);
assertNotNull(m);
assertEquals("2nd", m.getText());
m = (TextMessage) topicConsumer.receive(100);
assertNotNull(m);
assertEquals("2nd", m.getText());
session.rollback();
m = (TextMessage) queueConsumer.receive(100);
assertNotNull("first immediate redelivery", m);
m = (TextMessage) topicConsumer.receive(100);
assertNotNull("first immediate redelivery", m);
session.rollback();
m = (TextMessage) queueConsumer.receive(100);
assertNull("second delivery delayed: " + m, m);
m = (TextMessage) topicConsumer.receive(100);
assertNull("second delivery delayed: " + m, m);
m = (TextMessage) queueConsumer.receive(2000);
assertNotNull(m);
assertEquals("1st", m.getText());
m = (TextMessage) topicConsumer.receive(2000);
assertNotNull(m);
assertEquals("1st", m.getText());
m = (TextMessage) queueConsumer.receive(100);
assertNotNull(m);
assertEquals("2nd", m.getText());
m = (TextMessage) topicConsumer.receive(100);
assertNotNull(m);
assertEquals("2nd", m.getText());
session.rollback();
m = (TextMessage) queueConsumer.receive(2000);
assertNotNull(m);
assertEquals("1st", m.getText());
m = (TextMessage) topicConsumer.receive(2000);
assertNotNull(m);
assertEquals("1st", m.getText());
m = (TextMessage) queueConsumer.receive(100);
assertNotNull(m);
assertEquals("2nd", m.getText());
m = (TextMessage) topicConsumer.receive(100);
assertNotNull(m);
assertEquals("2nd", m.getText());
session.rollback();
// No third attempt for the Queue consumer
m = (TextMessage) queueConsumer.receive(2000);
assertNull(m);
m = (TextMessage) topicConsumer.receive(2000);
assertNotNull(m);
assertEquals("1st", m.getText());
m = (TextMessage) queueConsumer.receive(100);
assertNull(m);
m = (TextMessage) topicConsumer.receive(100);
assertNotNull(m);
assertEquals("2nd", m.getText());
session.commit();
}
Aggregations