当前位置: 首页>>代码示例>>Java>>正文


Java RedeliveryPolicy类代码示例

本文整理汇总了Java中org.apache.activemq.RedeliveryPolicy的典型用法代码示例。如果您正苦于以下问题:Java RedeliveryPolicy类的具体用法?Java RedeliveryPolicy怎么用?Java RedeliveryPolicy使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


RedeliveryPolicy类属于org.apache.activemq包,在下文中一共展示了RedeliveryPolicy类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: testGetNext

import org.apache.activemq.RedeliveryPolicy; //导入依赖的package包/类
@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);
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:21,代码来源:RedeliveryPolicyTest.java

示例2: startBroker

import org.apache.activemq.RedeliveryPolicy; //导入依赖的package包/类
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();
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:23,代码来源:BrokerRedeliveryTest.java

示例3: startBroker

import org.apache.activemq.RedeliveryPolicy; //导入依赖的package包/类
@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);
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:23,代码来源:NonBlockingConsumerRedeliveryTest.java

示例4: getEntryFor

import org.apache.activemq.RedeliveryPolicy; //导入依赖的package包/类
public RedeliveryPolicy getEntryFor(ActiveMQDestination destination) {
    RedeliveryPolicy answer = (RedeliveryPolicy) chooseValue(destination);
    if (answer == null) {
        answer = getDefaultEntry();
    }
    return answer;
}
 
开发者ID:DiamondLightSource,项目名称:daq-eclipse,代码行数:8,代码来源:RedeliveryPolicyMap.java

示例5: validatePolicyDelay

import org.apache.activemq.RedeliveryPolicy; //导入依赖的package包/类
private void validatePolicyDelay(long limit) {
    final ActiveMQDestination matchAll = new AnyDestination(new ActiveMQDestination[]{new ActiveMQQueue(">"), new ActiveMQTopic(">")});
    for (Object entry : redeliveryPolicyMap.get(matchAll)) {
        RedeliveryPolicy redeliveryPolicy = (RedeliveryPolicy) entry;
        validateLimit(limit, redeliveryPolicy);
    }
    RedeliveryPolicy defaultEntry = redeliveryPolicyMap.getDefaultEntry();
    if (defaultEntry != null) {
        validateLimit(limit, defaultEntry);
    }
}
 
开发者ID:DiamondLightSource,项目名称:daq-eclipse,代码行数:12,代码来源:RedeliveryPlugin.java

示例6: validateLimit

import org.apache.activemq.RedeliveryPolicy; //导入依赖的package包/类
private void validateLimit(long limit, RedeliveryPolicy redeliveryPolicy) {
    if (redeliveryPolicy.getInitialRedeliveryDelay() < limit) {
        throw new IllegalStateException("RedeliveryPolicy initialRedeliveryDelay must exceed: " + limit + ". " + redeliveryPolicy);
    }
    if (redeliveryPolicy.getRedeliveryDelay() < limit) {
        throw new IllegalStateException("RedeliveryPolicy redeliveryDelay must exceed: " + limit + ". " + redeliveryPolicy);
    }
}
 
开发者ID:DiamondLightSource,项目名称:daq-eclipse,代码行数:9,代码来源:RedeliveryPlugin.java

示例7: sendToDeadLetterQueue

import org.apache.activemq.RedeliveryPolicy; //导入依赖的package包/类
@Override
public boolean sendToDeadLetterQueue(ConnectionContext context, MessageReference messageReference, Subscription subscription, Throwable poisonCause) {
    if (messageReference.isExpired()) {
        // there are two uses of  sendToDeadLetterQueue, we are only interested in valid messages
        return super.sendToDeadLetterQueue(context, messageReference, subscription, poisonCause);
    } else {
        try {
            Destination regionDestination = (Destination) messageReference.getRegionDestination();
            final RedeliveryPolicy redeliveryPolicy = redeliveryPolicyMap.getEntryFor(regionDestination.getActiveMQDestination());
            if (redeliveryPolicy != null) {
                final int maximumRedeliveries = redeliveryPolicy.getMaximumRedeliveries();
                int redeliveryCount = messageReference.getRedeliveryCounter();
                if (RedeliveryPolicy.NO_MAXIMUM_REDELIVERIES == maximumRedeliveries || redeliveryCount < maximumRedeliveries) {

                    long delay = ( redeliveryCount == 0 ?
                            redeliveryPolicy.getInitialRedeliveryDelay() :
                            redeliveryPolicy.getNextRedeliveryDelay(getExistingDelay(messageReference)));

                    scheduleRedelivery(context, messageReference, delay, ++redeliveryCount);
                } else if (isSendToDlqIfMaxRetriesExceeded()) {
                    return super.sendToDeadLetterQueue(context, messageReference, subscription, poisonCause);
                } else {
                    LOG.debug("Discarding message that exceeds max redelivery count({}), {}", maximumRedeliveries, messageReference.getMessageId());
                }
            } else if (isFallbackToDeadLetter()) {
                return super.sendToDeadLetterQueue(context, messageReference, subscription, poisonCause);
            } else {
                LOG.debug("Ignoring dlq request for: {}, RedeliveryPolicy not found (and no fallback) for: {}", messageReference.getMessageId(), regionDestination.getActiveMQDestination());
            }

            return false;
        } catch (Exception exception) {
            // abort the ack, will be effective if client use transactions or individual ack with sync send
            RuntimeException toThrow =  new RuntimeException("Failed to schedule redelivery for: " + messageReference.getMessageId(), exception);
            LOG.error(toThrow.toString(), exception);
            throw toThrow;
        }
    }
}
 
开发者ID:DiamondLightSource,项目名称:daq-eclipse,代码行数:40,代码来源:RedeliveryPlugin.java

示例8: testZeroMaximumNumberOfRedeliveries

import org.apache.activemq.RedeliveryPolicy; //导入依赖的package包/类
/**
 * @throws Exception
 */
@Test
public void testZeroMaximumNumberOfRedeliveries() throws Exception {

   // Receive a message with the JMS API
   RedeliveryPolicy policy = connection.getRedeliveryPolicy();
   policy.setInitialRedeliveryDelay(100);
   policy.setUseExponentialBackOff(false);
   // let's set the maximum redeliveries to 0
   policy.setMaximumRedeliveries(0);

   connection.start();
   Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
   ActiveMQQueue destination = new ActiveMQQueue("TEST");
   this.makeSureCoreQueueExist("TEST");
   MessageProducer producer = session.createProducer(destination);

   MessageConsumer consumer = session.createConsumer(destination);

   // Send the messages
   producer.send(session.createTextMessage("1st"));
   producer.send(session.createTextMessage("2nd"));
   session.commit();

   TextMessage m;
   m = (TextMessage) consumer.receive(1000);
   assertNotNull(m);
   assertEquals("1st", m.getText());
   session.rollback();

   // the 1st message should not be redelivered since maximumRedeliveries is
   // set to 0
   m = (TextMessage) consumer.receive(1000);
   assertNotNull(m);
   assertEquals("2nd", m.getText());
   session.commit();

}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:41,代码来源:RedeliveryPolicyTest.java

示例9: testInitialRedeliveryDelayZero

import org.apache.activemq.RedeliveryPolicy; //导入依赖的package包/类
@Test
public void testInitialRedeliveryDelayZero() throws Exception {
   // Receive a message with the JMS API
   RedeliveryPolicy policy = connection.getRedeliveryPolicy();
   policy.setInitialRedeliveryDelay(0);
   policy.setUseExponentialBackOff(false);
   policy.setMaximumRedeliveries(1);

   connection.start();
   Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
   ActiveMQQueue destination = new ActiveMQQueue("TEST");
   this.makeSureCoreQueueExist("TEST");
   MessageProducer producer = session.createProducer(destination);

   MessageConsumer consumer = session.createConsumer(destination);

   // Send the messages
   producer.send(session.createTextMessage("1st"));
   producer.send(session.createTextMessage("2nd"));
   session.commit();

   TextMessage m;
   m = (TextMessage) consumer.receive(100);
   assertNotNull(m);
   assertEquals("1st", m.getText());
   session.rollback();

   m = (TextMessage) consumer.receive(100);
   assertNotNull(m);
   assertEquals("1st", m.getText());

   m = (TextMessage) consumer.receive(100);
   assertNotNull(m);
   assertEquals("2nd", m.getText());
   session.commit();

   session.commit();
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:39,代码来源:RedeliveryPolicyTest.java

示例10: testInitialRedeliveryDelayOne

import org.apache.activemq.RedeliveryPolicy; //导入依赖的package包/类
@Test
public void testInitialRedeliveryDelayOne() throws Exception {
   // Receive a message with the JMS API
   RedeliveryPolicy policy = connection.getRedeliveryPolicy();
   policy.setInitialRedeliveryDelay(1000);
   policy.setUseExponentialBackOff(false);
   policy.setMaximumRedeliveries(1);

   connection.start();
   Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
   ActiveMQQueue destination = new ActiveMQQueue("TEST");
   this.makeSureCoreQueueExist("TEST");
   MessageProducer producer = session.createProducer(destination);

   MessageConsumer consumer = session.createConsumer(destination);

   // Send the messages
   producer.send(session.createTextMessage("1st"));
   producer.send(session.createTextMessage("2nd"));
   session.commit();

   TextMessage m;
   m = (TextMessage) consumer.receive(100);
   assertNotNull(m);
   assertEquals("1st", m.getText());
   session.rollback();

   m = (TextMessage) consumer.receive(100);
   assertNull(m);

   m = (TextMessage) consumer.receive(2000);
   assertNotNull(m);
   assertEquals("1st", m.getText());

   m = (TextMessage) consumer.receive(100);
   assertNotNull(m);
   assertEquals("2nd", m.getText());
   session.commit();
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:40,代码来源:RedeliveryPolicyTest.java

示例11: getRedeliveryPolicy

import org.apache.activemq.RedeliveryPolicy; //导入依赖的package包/类
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;
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:10,代码来源:MessageListenerRedeliveryTest.java

示例12: createConnectionFactory

import org.apache.activemq.RedeliveryPolicy; //导入依赖的package包/类
@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;
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:13,代码来源:MessageListenerDeadLetterTest.java

示例13: createConnectionFactory

import org.apache.activemq.RedeliveryPolicy; //导入依赖的package包/类
@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;
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:12,代码来源:DeadLetterTest.java

示例14: createConnectionFactory

import org.apache.activemq.RedeliveryPolicy; //导入依赖的package包/类
@Override
protected ActiveMQConnectionFactory createConnectionFactory() throws Exception {
   ActiveMQConnectionFactory connectionFactory = super.createConnectionFactory();
   RedeliveryPolicy redeliveryPolicy = new RedeliveryPolicy();
   redeliveryPolicy.setMaximumRedeliveries(0);
   connectionFactory.setRedeliveryPolicy(redeliveryPolicy);
   return connectionFactory;
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:9,代码来源:NoRetryDeadLetterTest.java

示例15: createConnectionFactory

import org.apache.activemq.RedeliveryPolicy; //导入依赖的package包/类
@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;
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:12,代码来源:RollbacksWhileConsumingLargeQueueTest.java


注:本文中的org.apache.activemq.RedeliveryPolicy类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。