Author: jstrachan
Date: Fri Dec 30 06:05:51 2005
New Revision: 360089
URL: http://svn.apache.org/viewcvs?rev=360089&view=rev
Log:
added the ability to configure the DLQ policy on a per destination basis;
either use 1 global DLQ for all messages or use 1 DLQ for a bunch of messages
via a wildcard PolicyEntry or use an individual DLQ per destination (which
again can be attached to a wildcard via a PolicyEntry)
fixes AMQ-459
Added:
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/DeadLetterStrategy.java
(with props)
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/IndividualDeadLetterStrategy.java
(with props)
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/SharedDeadLetterStrategy.java
(with props)
Modified:
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Destination.java
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/PrefetchSubscription.java
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Queue.java
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Topic.java
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/DispatchPolicy.java
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/FixedSizedSubscriptionRecoveryPolicy.java
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/PolicyEntry.java
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/RoundRobinDispatchPolicy.java
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/SimpleDispatchPolicy.java
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/StrictOrderDispatchPolicy.java
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/TimedSubscriptionRecoveryPolicy.java
Modified:
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Destination.java
URL:
http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Destination.java?rev=360089&r1=360088&r2=360089&view=diff
==============================================================================
---
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Destination.java
(original)
+++
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Destination.java
Fri Dec 30 06:05:51 2005
@@ -20,6 +20,7 @@
import org.apache.activemq.Service;
import org.apache.activemq.broker.ConnectionContext;
+import org.apache.activemq.broker.region.policy.DeadLetterStrategy;
import org.apache.activemq.command.ActiveMQDestination;
import org.apache.activemq.command.Message;
import org.apache.activemq.command.MessageAck;
@@ -50,4 +51,5 @@
DestinationStatistics getDestinationStatistics();
MessageStore getMessageStore();
+ DeadLetterStrategy getDeadLetterStrategy();
}
Modified:
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/PrefetchSubscription.java
URL:
http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/PrefetchSubscription.java?rev=360089&r1=360088&r2=360089&view=diff
==============================================================================
---
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/PrefetchSubscription.java
(original)
+++
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/PrefetchSubscription.java
Fri Dec 30 06:05:51 2005
@@ -16,16 +16,9 @@
*/
package org.apache.activemq.broker.region;
-import java.io.IOException;
-import java.util.Iterator;
-import java.util.LinkedList;
-
-import javax.jms.InvalidSelectorException;
-import javax.jms.JMSException;
-
import org.apache.activemq.broker.ConnectionContext;
+import org.apache.activemq.broker.region.policy.DeadLetterStrategy;
import org.apache.activemq.command.ActiveMQDestination;
-import org.apache.activemq.command.ActiveMQQueue;
import org.apache.activemq.command.ConsumerInfo;
import org.apache.activemq.command.Message;
import org.apache.activemq.command.MessageAck;
@@ -33,6 +26,13 @@
import org.apache.activemq.command.MessageId;
import org.apache.activemq.transaction.Synchronization;
+import javax.jms.InvalidSelectorException;
+import javax.jms.JMSException;
+
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.LinkedList;
+
/**
* A subscription that honors the pre-fetch option of the ConsumerInfo.
*
@@ -43,7 +43,6 @@
final protected LinkedList matched = new LinkedList();
final protected LinkedList dispatched = new LinkedList();
- final protected ActiveMQDestination dlqDestination = new
ActiveMQQueue("ActiveMQ.DLQ");
protected int delivered=0;
int preLoadLimit=1024*100;
@@ -176,9 +175,13 @@
Message message = node.getMessage();
if( message !=null ) {
+ // TODO is this meant to be == null?
if( message.getOriginalDestination()!=null )
message.setOriginalDestination(message.getDestination());
- message.setDestination(dlqDestination);
+
+ ActiveMQDestination originalDestination =
message.getOriginalDestination();
+ DeadLetterStrategy deadLetterStrategy =
node.getRegionDestination().getDeadLetterStrategy();
+
message.setDestination(deadLetterStrategy.getDeadLetterQueueFor(originalDestination));
if( message.getOriginalTransactionId()!=null )
message.setOriginalTransactionId(message.getTransactionId());
Modified:
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Queue.java
URL:
http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Queue.java?rev=360089&r1=360088&r2=360089&view=diff
==============================================================================
---
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Queue.java
(original)
+++
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Queue.java
Fri Dec 30 06:05:51 2005
@@ -22,6 +22,8 @@
import java.util.LinkedList;
import org.apache.activemq.broker.ConnectionContext;
+import org.apache.activemq.broker.region.policy.DeadLetterStrategy;
+import org.apache.activemq.broker.region.policy.SharedDeadLetterStrategy;
import org.apache.activemq.broker.region.policy.DispatchPolicy;
import org.apache.activemq.broker.region.policy.RoundRobinDispatchPolicy;
import org.apache.activemq.command.ActiveMQDestination;
@@ -67,6 +69,7 @@
private DispatchPolicy dispatchPolicy = new RoundRobinDispatchPolicy();
protected final MessageStore store;
protected int highestSubscriptionPriority;
+ private DeadLetterStrategy deadLetterStrategy = new
SharedDeadLetterStrategy();
public Queue(ActiveMQDestination destination, final UsageManager
memoryManager, MessageStore store,
DestinationStatistics parentStats, TaskRunnerFactory taskFactory)
throws Throwable {
@@ -330,6 +333,14 @@
public void setDispatchPolicy(DispatchPolicy dispatchPolicy) {
this.dispatchPolicy = dispatchPolicy;
+ }
+
+ public DeadLetterStrategy getDeadLetterStrategy() {
+ return deadLetterStrategy;
+ }
+
+ public void setDeadLetterStrategy(DeadLetterStrategy deadLetterStrategy) {
+ this.deadLetterStrategy = deadLetterStrategy;
}
// Implementation methods
Modified:
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Topic.java
URL:
http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Topic.java?rev=360089&r1=360088&r2=360089&view=diff
==============================================================================
---
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Topic.java
(original)
+++
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Topic.java
Fri Dec 30 06:05:51 2005
@@ -20,6 +20,8 @@
import org.apache.activemq.advisory.AdvisorySupport;
import org.apache.activemq.broker.ConnectionContext;
+import org.apache.activemq.broker.region.policy.DeadLetterStrategy;
+import org.apache.activemq.broker.region.policy.SharedDeadLetterStrategy;
import org.apache.activemq.broker.region.policy.DispatchPolicy;
import
org.apache.activemq.broker.region.policy.LastImageSubscriptionRecoveryPolicy;
import org.apache.activemq.broker.region.policy.SimpleDispatchPolicy;
@@ -60,6 +62,7 @@
private DispatchPolicy dispatchPolicy = new SimpleDispatchPolicy();
private SubscriptionRecoveryPolicy subscriptionRecoveryPolicy = new
LastImageSubscriptionRecoveryPolicy();
private boolean sendAdvisoryIfNoConsumers;
+ private DeadLetterStrategy deadLetterStrategy = new
SharedDeadLetterStrategy();
public Topic(ActiveMQDestination destination, TopicMessageStore store,
UsageManager memoryManager, DestinationStatistics parentStats,
TaskRunnerFactory taskFactory) {
@@ -279,6 +282,14 @@
public MessageStore getMessageStore() {
return store;
+ }
+
+ public DeadLetterStrategy getDeadLetterStrategy() {
+ return deadLetterStrategy;
+ }
+
+ public void setDeadLetterStrategy(DeadLetterStrategy deadLetterStrategy) {
+ this.deadLetterStrategy = deadLetterStrategy;
}
// Implementation methods
Added:
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/DeadLetterStrategy.java
URL:
http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/DeadLetterStrategy.java?rev=360089&view=auto
==============================================================================
---
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/DeadLetterStrategy.java
(added)
+++
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/DeadLetterStrategy.java
Fri Dec 30 06:05:51 2005
@@ -0,0 +1,33 @@
+/**
+ *
+ * Copyright 2005-2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.broker.region.policy;
+
+import org.apache.activemq.command.ActiveMQDestination;
+
+/**
+ * A strategy for choosing which destination is used for dead letter queue
messages.
+ *
+ * @version $Revision$
+ */
+public interface DeadLetterStrategy {
+
+ /**
+ * Returns the dead letter queue for the given destination.
+ */
+ ActiveMQDestination getDeadLetterQueueFor(ActiveMQDestination
originalDestination);
+
+}
Propchange:
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/DeadLetterStrategy.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/DeadLetterStrategy.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange:
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/DeadLetterStrategy.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified:
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/DispatchPolicy.java
URL:
http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/DispatchPolicy.java?rev=360089&r1=360088&r2=360089&view=diff
==============================================================================
---
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/DispatchPolicy.java
(original)
+++
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/DispatchPolicy.java
Fri Dec 30 06:05:51 2005
@@ -16,11 +16,11 @@
*/
package org.apache.activemq.broker.region.policy;
+import edu.emory.mathcs.backport.java.util.concurrent.CopyOnWriteArrayList;
+
import org.apache.activemq.broker.ConnectionContext;
import org.apache.activemq.broker.region.MessageReference;
import org.apache.activemq.filter.MessageEvaluationContext;
-
-import edu.emory.mathcs.backport.java.util.concurrent.CopyOnWriteArrayList;
/**
* Abstraction to allow different dispatching policies to be plugged
Modified:
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/FixedSizedSubscriptionRecoveryPolicy.java
URL:
http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/FixedSizedSubscriptionRecoveryPolicy.java?rev=360089&r1=360088&r2=360089&view=diff
==============================================================================
---
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/FixedSizedSubscriptionRecoveryPolicy.java
(original)
+++
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/FixedSizedSubscriptionRecoveryPolicy.java
Fri Dec 30 06:05:51 2005
@@ -16,9 +16,6 @@
*/
package org.apache.activemq.broker.region.policy;
-import java.util.Iterator;
-import java.util.List;
-
import org.apache.activemq.broker.ConnectionContext;
import org.apache.activemq.broker.region.MessageReference;
import org.apache.activemq.broker.region.Subscription;
@@ -27,6 +24,9 @@
import org.apache.activemq.memory.list.DestinationBasedMessageList;
import org.apache.activemq.memory.list.MessageList;
import org.apache.activemq.memory.list.SimpleMessageList;
+
+import java.util.Iterator;
+import java.util.List;
/**
* This implementation of [EMAIL PROTECTED] SubscriptionRecoveryPolicy} will
keep a fixed
Added:
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/IndividualDeadLetterStrategy.java
URL:
http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/IndividualDeadLetterStrategy.java?rev=360089&view=auto
==============================================================================
---
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/IndividualDeadLetterStrategy.java
(added)
+++
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/IndividualDeadLetterStrategy.java
Fri Dec 30 06:05:51 2005
@@ -0,0 +1,109 @@
+/**
+ *
+ * Copyright 2005 LogicBlaze, Inc. http://www.logicblaze.com
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ **/
+package org.apache.activemq.broker.region.policy;
+
+import org.apache.activemq.command.ActiveMQDestination;
+import org.apache.activemq.command.ActiveMQQueue;
+import org.apache.activemq.command.ActiveMQTopic;
+
+/**
+ * A [EMAIL PROTECTED] DeadLetterStrategy} where each destination has its own
individual
+ * DLQ using the subject naming hierarchy.
+ *
+ * @org.xbean.XBean
+ *
+ * @version $Revision$
+ */
+public class IndividualDeadLetterStrategy implements DeadLetterStrategy {
+
+ private String topicPrefix = "ActiveMQ.DLQ.Topic.";
+ private String queuePrefix = "ActiveMQ.DLQ.Queue.";
+ private boolean useQueueForQueueMessages = true;
+ private boolean useQueueForTopicMessages = true;
+
+ public ActiveMQDestination getDeadLetterQueueFor(ActiveMQDestination
originalDestination) {
+ if (originalDestination.isQueue()) {
+ return createDestination(originalDestination, queuePrefix,
useQueueForQueueMessages);
+ }
+ else {
+ return createDestination(originalDestination, topicPrefix,
useQueueForTopicMessages);
+ }
+ }
+
+ // Properties
+ //
-------------------------------------------------------------------------
+
+ public String getQueuePrefix() {
+ return queuePrefix;
+ }
+
+ /**
+ * Sets the prefix to use for all dead letter queues for queue messages
+ */
+ public void setQueuePrefix(String queuePrefix) {
+ this.queuePrefix = queuePrefix;
+ }
+
+ public String getTopicPrefix() {
+ return topicPrefix;
+ }
+
+ /**
+ * Sets the prefix to use for all dead letter queues for topic messages
+ */
+ public void setTopicPrefix(String topicPrefix) {
+ this.topicPrefix = topicPrefix;
+ }
+
+ public boolean isUseQueueForQueueMessages() {
+ return useQueueForQueueMessages;
+ }
+
+ /**
+ * Sets whether a queue or topic should be used for queue messages sent to
a
+ * DLQ. The default is to use a Queue
+ */
+ public void setUseQueueForQueueMessages(boolean useQueueForQueueMessages) {
+ this.useQueueForQueueMessages = useQueueForQueueMessages;
+ }
+
+ public boolean isUseQueueForTopicMessages() {
+ return useQueueForTopicMessages;
+ }
+
+ /**
+ * Sets whether a queue or topic should be used for topic messages sent to
a
+ * DLQ. The default is to use a Queue
+ */
+ public void setUseQueueForTopicMessages(boolean useQueueForTopicMessages) {
+ this.useQueueForTopicMessages = useQueueForTopicMessages;
+ }
+
+ // Implementation methods
+ //
-------------------------------------------------------------------------
+ protected ActiveMQDestination createDestination(ActiveMQDestination
originalDestination, String prefix, boolean useQueue) {
+ String name = prefix + originalDestination.getPhysicalName();
+ if (useQueue) {
+ return new ActiveMQQueue(name);
+ }
+ else {
+ return new ActiveMQTopic(name);
+ }
+ }
+
+}
Propchange:
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/IndividualDeadLetterStrategy.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/IndividualDeadLetterStrategy.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange:
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/IndividualDeadLetterStrategy.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified:
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/PolicyEntry.java
URL:
http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/PolicyEntry.java?rev=360089&r1=360088&r2=360089&view=diff
==============================================================================
---
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/PolicyEntry.java
(original)
+++
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/PolicyEntry.java
Fri Dec 30 06:05:51 2005
@@ -35,6 +35,7 @@
private SubscriptionRecoveryPolicy subscriptionRecoveryPolicy;
private RedeliveryPolicy redeliveryPolicy;
private boolean sendAdvisoryIfNoConsumers;
+ private DeadLetterStrategy deadLetterStrategy = new
SharedDeadLetterStrategy();
public void configure(Queue queue) {
if (dispatchPolicy != null) {
@@ -89,4 +90,17 @@
public void setSendAdvisoryIfNoConsumers(boolean
sendAdvisoryIfNoConsumers) {
this.sendAdvisoryIfNoConsumers = sendAdvisoryIfNoConsumers;
}
+
+ public DeadLetterStrategy getDeadLetterStrategy() {
+ return deadLetterStrategy;
+ }
+
+ /**
+ * Sets the policy used to determine which dead letter queue destination
should be used
+ */
+ public void setDeadLetterStrategy(DeadLetterStrategy deadLetterStrategy) {
+ this.deadLetterStrategy = deadLetterStrategy;
+ }
+
+
}
Modified:
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/RoundRobinDispatchPolicy.java
URL:
http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/RoundRobinDispatchPolicy.java?rev=360089&r1=360088&r2=360089&view=diff
==============================================================================
---
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/RoundRobinDispatchPolicy.java
(original)
+++
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/RoundRobinDispatchPolicy.java
Fri Dec 30 06:05:51 2005
@@ -16,14 +16,14 @@
*/
package org.apache.activemq.broker.region.policy;
-import java.util.Iterator;
+import edu.emory.mathcs.backport.java.util.concurrent.CopyOnWriteArrayList;
import org.apache.activemq.broker.ConnectionContext;
import org.apache.activemq.broker.region.MessageReference;
import org.apache.activemq.broker.region.Subscription;
import org.apache.activemq.filter.MessageEvaluationContext;
-import edu.emory.mathcs.backport.java.util.concurrent.CopyOnWriteArrayList;
+import java.util.Iterator;
/**
* Simple dispatch policy that sends a message to every subscription that
Added:
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/SharedDeadLetterStrategy.java
URL:
http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/SharedDeadLetterStrategy.java?rev=360089&view=auto
==============================================================================
---
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/SharedDeadLetterStrategy.java
(added)
+++
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/SharedDeadLetterStrategy.java
Fri Dec 30 06:05:51 2005
@@ -0,0 +1,48 @@
+/**
+ *
+ * Copyright 2005 LogicBlaze, Inc. http://www.logicblaze.com
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ **/
+package org.apache.activemq.broker.region.policy;
+
+import org.apache.activemq.command.ActiveMQDestination;
+import org.apache.activemq.command.ActiveMQQueue;
+
+/**
+ * A default implementation of [EMAIL PROTECTED] DeadLetterStrategy} which uses
+ * a constant destination.
+ *
+ *
+ * @org.xbean.XBean
+ *
+ * @version $Revision$
+ */
+public class SharedDeadLetterStrategy implements DeadLetterStrategy {
+
+ private ActiveMQDestination deadLetterQueue = new
ActiveMQQueue("ActiveMQ.DLQ");
+
+ public ActiveMQDestination getDeadLetterQueueFor(ActiveMQDestination
originalDestination) {
+ return deadLetterQueue;
+ }
+
+ public ActiveMQDestination getDeadLetterQueue() {
+ return deadLetterQueue;
+ }
+
+ public void setDeadLetterQueue(ActiveMQDestination deadLetterQueue) {
+ this.deadLetterQueue = deadLetterQueue;
+ }
+
+}
Propchange:
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/SharedDeadLetterStrategy.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/SharedDeadLetterStrategy.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange:
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/SharedDeadLetterStrategy.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified:
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/SimpleDispatchPolicy.java
URL:
http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/SimpleDispatchPolicy.java?rev=360089&r1=360088&r2=360089&view=diff
==============================================================================
---
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/SimpleDispatchPolicy.java
(original)
+++
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/SimpleDispatchPolicy.java
Fri Dec 30 06:05:51 2005
@@ -16,14 +16,14 @@
*/
package org.apache.activemq.broker.region.policy;
-import java.util.Iterator;
+import edu.emory.mathcs.backport.java.util.concurrent.CopyOnWriteArrayList;
import org.apache.activemq.broker.ConnectionContext;
import org.apache.activemq.broker.region.MessageReference;
import org.apache.activemq.broker.region.Subscription;
import org.apache.activemq.filter.MessageEvaluationContext;
-import edu.emory.mathcs.backport.java.util.concurrent.CopyOnWriteArrayList;
+import java.util.Iterator;
/**
* Simple dispatch policy that sends a message to every subscription that
Modified:
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/StrictOrderDispatchPolicy.java
URL:
http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/StrictOrderDispatchPolicy.java?rev=360089&r1=360088&r2=360089&view=diff
==============================================================================
---
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/StrictOrderDispatchPolicy.java
(original)
+++
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/StrictOrderDispatchPolicy.java
Fri Dec 30 06:05:51 2005
@@ -16,14 +16,14 @@
*/
package org.apache.activemq.broker.region.policy;
-import java.util.Iterator;
+import edu.emory.mathcs.backport.java.util.concurrent.CopyOnWriteArrayList;
import org.apache.activemq.broker.ConnectionContext;
import org.apache.activemq.broker.region.MessageReference;
import org.apache.activemq.broker.region.Subscription;
import org.apache.activemq.filter.MessageEvaluationContext;
-import edu.emory.mathcs.backport.java.util.concurrent.CopyOnWriteArrayList;
+import java.util.Iterator;
/**
* Dispatch policy that causes every subscription to see messages in the same
order.
Modified:
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/TimedSubscriptionRecoveryPolicy.java
URL:
http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/TimedSubscriptionRecoveryPolicy.java?rev=360089&r1=360088&r2=360089&view=diff
==============================================================================
---
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/TimedSubscriptionRecoveryPolicy.java
(original)
+++
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/TimedSubscriptionRecoveryPolicy.java
Fri Dec 30 06:05:51 2005
@@ -16,18 +16,18 @@
*/
package org.apache.activemq.broker.region.policy;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-
import org.apache.activemq.broker.ConnectionContext;
import org.apache.activemq.broker.region.MessageReference;
import org.apache.activemq.broker.region.Subscription;
import org.apache.activemq.broker.region.Topic;
import org.apache.activemq.filter.MessageEvaluationContext;
import org.apache.activemq.thread.Scheduler;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
/**
* This implementation of [EMAIL PROTECTED] SubscriptionRecoveryPolicy} will
keep a timed