Package org.apache.activemq.broker.util
Class RedeliveryPlugin
- java.lang.Object
-
- org.apache.activemq.broker.BrokerFilter
-
- org.apache.activemq.broker.MutableBrokerFilter
-
- org.apache.activemq.broker.BrokerPluginSupport
-
- org.apache.activemq.broker.util.RedeliveryPlugin
-
- All Implemented Interfaces:
Broker
,BrokerPlugin
,Region
,Service
public class RedeliveryPlugin extends BrokerPluginSupport
Replace regular DLQ handling with redelivery via a resend to the original destination after a delay A destination matching RedeliveryPolicy controls the quantity and delay for re-sends If there is no matching policy or an existing policy limit is exceeded by default regular DLQ processing resumes. This is controlled via sendToDlqIfMaxRetriesExceeded and fallbackToDeadLetter
-
-
Field Summary
Fields Modifier and Type Field Description static String
REDELIVERY_DELAY
-
Fields inherited from class org.apache.activemq.broker.MutableBrokerFilter
next
-
-
Constructor Summary
Constructors Constructor Description RedeliveryPlugin()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description RedeliveryPolicyMap
getRedeliveryPolicyMap()
Broker
installPlugin(Broker broker)
Installs the plugin into the interceptor chain of the broker, returning the new intercepted broker to use.boolean
isFallbackToDeadLetter()
boolean
isSendToDlqIfMaxRetriesExceeded()
boolean
sendToDeadLetterQueue(ConnectionContext context, MessageReference messageReference, Subscription subscription, Throwable poisonCause)
A message needs to go the a DLQvoid
setFallbackToDeadLetter(boolean fallbackToDeadLetter)
What to do if there is no matching redelivery policy for a destination.void
setRedeliveryPolicyMap(RedeliveryPolicyMap redeliveryPolicyMap)
void
setSendToDlqIfMaxRetriesExceeded(boolean sendToDlqIfMaxRetriesExceeded)
What to do if the maxretries on a matching redelivery policy is exceeded.-
Methods inherited from class org.apache.activemq.broker.BrokerPluginSupport
start, stop
-
Methods inherited from class org.apache.activemq.broker.MutableBrokerFilter
getAdaptor, getNext, setNext
-
Methods inherited from class org.apache.activemq.broker.BrokerFilter
acknowledge, addBroker, addConnection, addConsumer, addDestination, addDestinationInfo, addProducer, addSession, beginTransaction, brokerServiceStarted, commitTransaction, fastProducer, forgetTransaction, gc, getAdminConnectionContext, getBrokerId, getBrokerName, getBrokerSequenceId, getBrokerService, getClients, getDestinationMap, getDestinationMap, getDestinations, getDestinations, getDurableDestinations, getExecutor, getPeerBrokerInfos, getPreparedTransactions, getRoot, getScheduler, getTempDataStore, getVmConnectorURI, isExpired, isFaultTolerantConfiguration, isFull, isStopped, messageConsumed, messageDelivered, messageDiscarded, messageExpired, messagePull, networkBridgeStarted, networkBridgeStopped, nowMasterBroker, postProcessDispatch, prepareTransaction, preProcessDispatch, processConsumerControl, processDispatchNotification, reapplyInterceptor, removeBroker, removeConnection, removeConsumer, removeDestination, removeDestinationInfo, removeProducer, removeSession, removeSubscription, rollbackTransaction, send, setAdminConnectionContext, slowConsumer, virtualDestinationAdded, virtualDestinationRemoved
-
-
-
-
Field Detail
-
REDELIVERY_DELAY
public static final String REDELIVERY_DELAY
- See Also:
- Constant Field Values
-
-
Method Detail
-
installPlugin
public Broker installPlugin(Broker broker) throws Exception
Description copied from interface:BrokerPlugin
Installs the plugin into the interceptor chain of the broker, returning the new intercepted broker to use.- Specified by:
installPlugin
in interfaceBrokerPlugin
- Overrides:
installPlugin
in classBrokerPluginSupport
- Throws:
Exception
-
getRedeliveryPolicyMap
public RedeliveryPolicyMap getRedeliveryPolicyMap()
-
setRedeliveryPolicyMap
public void setRedeliveryPolicyMap(RedeliveryPolicyMap redeliveryPolicyMap)
-
isSendToDlqIfMaxRetriesExceeded
public boolean isSendToDlqIfMaxRetriesExceeded()
-
setSendToDlqIfMaxRetriesExceeded
public void setSendToDlqIfMaxRetriesExceeded(boolean sendToDlqIfMaxRetriesExceeded)
What to do if the maxretries on a matching redelivery policy is exceeded. when true, the region broker DLQ processing will be used via sendToDeadLetterQueue when false, there is no action- Parameters:
sendToDlqIfMaxRetriesExceeded
-
-
isFallbackToDeadLetter
public boolean isFallbackToDeadLetter()
-
setFallbackToDeadLetter
public void setFallbackToDeadLetter(boolean fallbackToDeadLetter)
What to do if there is no matching redelivery policy for a destination. when true, the region broker DLQ processing will be used via sendToDeadLetterQueue when false, there is no action- Parameters:
fallbackToDeadLetter
-
-
sendToDeadLetterQueue
public boolean sendToDeadLetterQueue(ConnectionContext context, MessageReference messageReference, Subscription subscription, Throwable poisonCause)
Description copied from interface:Broker
A message needs to go the a DLQ- Specified by:
sendToDeadLetterQueue
in interfaceBroker
- Overrides:
sendToDeadLetterQueue
in classBrokerFilter
poisonCause
- reason for dlq submission, may be null- Returns:
- true if Message was placed in a DLQ false if discarded.
-
-