org.apache.activemq.RedeliveryPolicy Java Examples

The following examples show how to use org.apache.activemq.RedeliveryPolicy. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: RedeliveryPolicyTest.java    From activemq-artemis with Apache License 2.0 6 votes vote down vote up
@Test
public void testGetNext() throws Exception {

   RedeliveryPolicy policy = new RedeliveryPolicy();
   policy.setInitialRedeliveryDelay(0);
   policy.setRedeliveryDelay(500);
   policy.setBackOffMultiplier((short) 2);
   policy.setUseExponentialBackOff(true);

   long delay = policy.getNextRedeliveryDelay(0);
   assertEquals(500, delay);
   delay = policy.getNextRedeliveryDelay(delay);
   assertEquals(500 * 2, delay);
   delay = policy.getNextRedeliveryDelay(delay);
   assertEquals(500 * 4, delay);

   policy.setUseExponentialBackOff(false);
   delay = policy.getNextRedeliveryDelay(delay);
   assertEquals(500, delay);
}
 
Example #2
Source File: BrokerRedeliveryTest.java    From activemq-artemis with Apache License 2.0 6 votes vote down vote up
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();
}
 
Example #3
Source File: NonBlockingConsumerRedeliveryTest.java    From activemq-artemis with Apache License 2.0 6 votes vote down vote up
@Before
public void startBroker() throws Exception {
   broker = new BrokerService();
   broker.setDeleteAllMessagesOnStartup(true);
   broker.setPersistent(false);
   broker.setUseJmx(false);
   broker.addConnector("tcp://0.0.0.0:0");
   broker.start();
   broker.waitUntilStarted();

   connectionUri = broker.getTransportConnectors().get(0).getPublishableConnectString();
   connectionFactory = new ActiveMQConnectionFactory(connectionUri);
   connectionFactory.setNonBlockingRedelivery(true);

   RedeliveryPolicy policy = connectionFactory.getRedeliveryPolicy();
   policy.setInitialRedeliveryDelay(TimeUnit.SECONDS.toMillis(2));
   policy.setBackOffMultiplier(-1);
   policy.setRedeliveryDelay(TimeUnit.SECONDS.toMillis(2));
   policy.setMaximumRedeliveryDelay(-1);
   policy.setUseExponentialBackOff(false);
   policy.setMaximumRedeliveries(-1);
}
 
Example #4
Source File: ActiveMQAutoConfiguration.java    From mykit-delay with Apache License 2.0 5 votes vote down vote up
@Bean
public RedeliveryPolicy activeMQRedeliveryPolicy(){
    RedeliveryPolicy policy = new RedeliveryPolicy();
    policy.setUseExponentialBackOff(properties.isUseExponentialBackOff());
    policy.setMaximumRedeliveries(properties.getMaximumRedeliveries());
    policy.setInitialRedeliveryDelay(properties.getInitialRedeliveryDelay());
    policy.setBackOffMultiplier(properties.getBackOffMultiplier());
    policy.setMaximumRedeliveryDelay(properties.getMaximumRedeliveryDelay());
    return policy;
}
 
Example #5
Source File: ConfigActiveMQConnectionFactory.java    From onetwo with Apache License 2.0 5 votes vote down vote up
@Override
public void customize(ActiveMQConnectionFactory factory) {
	RedeliveryPolicyMap rpm = factory.getRedeliveryPolicyMap();
	if(rpm!=null && rpm.getDefaultEntry()!=null){
		RedeliveryPolicy def = rpm.getDefaultEntry();
		CopyUtils.copy(def, activemqProperties.getRedelivery().getDefaultPolicy());
	}
}
 
Example #6
Source File: MessageListenerRedeliveryTest.java    From activemq-artemis with Apache License 2.0 5 votes vote down vote up
protected RedeliveryPolicy getRedeliveryPolicy() {
   RedeliveryPolicy redeliveryPolicy = new RedeliveryPolicy();
   redeliveryPolicy.setInitialRedeliveryDelay(0);
   redeliveryPolicy.setRedeliveryDelay(1000);
   redeliveryPolicy.setMaximumRedeliveries(3);
   redeliveryPolicy.setBackOffMultiplier((short) 2);
   redeliveryPolicy.setUseExponentialBackOff(true);
   return redeliveryPolicy;
}
 
Example #7
Source File: MessageListenerDeadLetterTest.java    From activemq-artemis with Apache License 2.0 5 votes vote down vote up
@Override
protected ActiveMQConnectionFactory createConnectionFactory() throws Exception {
   ActiveMQConnectionFactory answer = super.createConnectionFactory();
   RedeliveryPolicy policy = new RedeliveryPolicy();
   policy.setMaximumRedeliveries(3);
   policy.setBackOffMultiplier((short) 1);
   policy.setRedeliveryDelay(0);
   policy.setInitialRedeliveryDelay(0);
   policy.setUseExponentialBackOff(false);
   answer.setRedeliveryPolicy(policy);
   return answer;
}
 
Example #8
Source File: DeadLetterTest.java    From activemq-artemis with Apache License 2.0 5 votes vote down vote up
@Override
protected ActiveMQConnectionFactory createConnectionFactory() throws Exception {
   ActiveMQConnectionFactory answer = super.createConnectionFactory();
   RedeliveryPolicy policy = new RedeliveryPolicy();
   policy.setMaximumRedeliveries(3);
   policy.setBackOffMultiplier((short) 1);
   policy.setInitialRedeliveryDelay(10);
   policy.setUseExponentialBackOff(false);
   answer.setRedeliveryPolicy(policy);
   return answer;
}
 
Example #9
Source File: NoRetryDeadLetterTest.java    From activemq-artemis with Apache License 2.0 5 votes vote down vote up
@Override
protected ActiveMQConnectionFactory createConnectionFactory() throws Exception {
   ActiveMQConnectionFactory connectionFactory = super.createConnectionFactory();
   RedeliveryPolicy redeliveryPolicy = new RedeliveryPolicy();
   redeliveryPolicy.setMaximumRedeliveries(0);
   connectionFactory.setRedeliveryPolicy(redeliveryPolicy);
   return connectionFactory;
}
 
Example #10
Source File: RollbacksWhileConsumingLargeQueueTest.java    From activemq-artemis with Apache License 2.0 5 votes vote down vote up
@Override
protected ConnectionFactory createConnectionFactory() throws Exception {
   ActiveMQConnectionFactory answer = (ActiveMQConnectionFactory) super.createConnectionFactory();
   RedeliveryPolicy policy = new RedeliveryPolicy();
   policy.setMaximumRedeliveries(3);
   policy.setRedeliveryDelay(0);
   policy.setInitialRedeliveryDelay(0);
   policy.setUseExponentialBackOff(false);
   answer.setRedeliveryPolicy(policy);
   return answer;
}
 
Example #11
Source File: AbstractVmJMSTest.java    From cxf with Apache License 2.0 5 votes vote down vote up
public static void startBusAndJMS(String brokerURI) {
    bus = BusFactory.getDefaultBus();
    ActiveMQConnectionFactory cf1 = new ActiveMQConnectionFactory(brokerURI);
    RedeliveryPolicy redeliveryPolicy = new RedeliveryPolicy();
    redeliveryPolicy.setMaximumRedeliveries(1);
    redeliveryPolicy.setInitialRedeliveryDelay(1000);
    cf1.setRedeliveryPolicy(redeliveryPolicy());
    cf = new PooledConnectionFactory(cf1);
    cff = new ConnectionFactoryFeature(cf);
}
 
Example #12
Source File: ActiveMQResourceAdapter.java    From tomee with Apache License 2.0 5 votes vote down vote up
private ActiveMQConnection getActiveMQConnection(MessageActivationSpec activationSpec, InvocationHandler invocationHandler) {
    if (AutoConnectionTracker.ConnectionInvocationHandler.class.isInstance(invocationHandler)) {
        final Object handle = Reflections.get(invocationHandler, "handle");
        if (TomEEManagedConnectionProxy.class.isInstance(handle)) {
            final ActiveMQManagedConnection c = ActiveMQManagedConnection.class.cast(Reflections.get(handle, "connection"));
            final ActiveMQConnection physicalConnection = ActiveMQConnection.class.cast(Reflections.get(c, "physicalConnection"));
            final RedeliveryPolicy redeliveryPolicy = activationSpec.redeliveryPolicy();
            if (redeliveryPolicy != null) {
                physicalConnection.setRedeliveryPolicy(redeliveryPolicy);
            }
            return physicalConnection;
        }
    }
    return null;
}
 
Example #13
Source File: BrokerRedeliveryTest.java    From activemq-artemis with Apache License 2.0 4 votes vote down vote up
public void testInfiniteRedelivery() throws Exception {
   initialRedeliveryDelayMillis = redeliveryDelayMillis;
   maxBrokerRedeliveries = RedeliveryPolicy.NO_MAXIMUM_REDELIVERIES;
   doTestScheduledRedelivery(RedeliveryPolicy.DEFAULT_MAXIMUM_REDELIVERIES + 1, false);
}
 
Example #14
Source File: BrokerRedeliveryTest.java    From activemq-artemis with Apache License 2.0 4 votes vote down vote up
public void doTestScheduledRedelivery(int maxBrokerRedeliveriesToValidate, boolean validateDLQ) throws Exception {

      startBroker(true);
      sendMessage(0);

      ActiveMQConnection consumerConnection = (ActiveMQConnection) createConnection();
      RedeliveryPolicy redeliveryPolicy = new RedeliveryPolicy();
      redeliveryPolicy.setInitialRedeliveryDelay(0);
      redeliveryPolicy.setMaximumRedeliveries(0);
      consumerConnection.setRedeliveryPolicy(redeliveryPolicy);
      consumerConnection.start();
      Session consumerSession = consumerConnection.createSession(true, Session.SESSION_TRANSACTED);
      MessageConsumer consumer = consumerSession.createConsumer(destination);
      Message message = consumer.receive(1000);
      assertNotNull("got message", message);
      LOG.info("got: " + message);
      consumerSession.rollback();

      for (int i = 0; i < maxBrokerRedeliveriesToValidate; i++) {
         Message shouldBeNull = consumer.receive(500);
         assertNull("did not get message after redelivery count exceeded: " + shouldBeNull, shouldBeNull);

         TimeUnit.SECONDS.sleep(3);

         Message brokerRedeliveryMessage = consumer.receive(500);
         LOG.info("got: " + brokerRedeliveryMessage);
         assertNotNull("got message via broker redelivery after delay", brokerRedeliveryMessage);
         assertEquals("message matches", message.getStringProperty("data"), brokerRedeliveryMessage.getStringProperty("data"));
         assertEquals("has expiryDelay specified", i == 0 ? initialRedeliveryDelayMillis : redeliveryDelayMillis, brokerRedeliveryMessage.getLongProperty(RedeliveryPlugin.REDELIVERY_DELAY));

         consumerSession.rollback();
      }

      if (validateDLQ) {
         MessageConsumer dlqConsumer = consumerSession.createConsumer(new ActiveMQQueue(SharedDeadLetterStrategy.DEFAULT_DEAD_LETTER_QUEUE_NAME));
         Message dlqMessage = dlqConsumer.receive(2000);
         assertNotNull("Got message from dql", dlqMessage);
         assertEquals("message matches", message.getStringProperty("data"), dlqMessage.getStringProperty("data"));
         consumerSession.commit();
      } else {
         // consume/commit ok
         message = consumer.receive(3000);
         assertNotNull("got message", message);
         assertEquals("redeliveries accounted for", maxBrokerRedeliveriesToValidate + 2, message.getLongProperty("JMSXDeliveryCount"));
         consumerSession.commit();
      }

      consumerConnection.close();
   }