You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ch...@apache.org on 2009/03/13 01:08:47 UTC
svn commit: r753070 - in
/activemq/sandbox/activemq-flow/src/main/java/org/apache/activemq/broker:
Domain.java QueueDomain.java Router.java TopicDomain.java
Author: chirino
Date: Fri Mar 13 00:08:47 2009
New Revision: 753070
URL: http://svn.apache.org/viewvc?rev=753070&view=rev
Log:
Add routing support for composite/multi destinations
Modified:
activemq/sandbox/activemq-flow/src/main/java/org/apache/activemq/broker/Domain.java
activemq/sandbox/activemq-flow/src/main/java/org/apache/activemq/broker/QueueDomain.java
activemq/sandbox/activemq-flow/src/main/java/org/apache/activemq/broker/Router.java
activemq/sandbox/activemq-flow/src/main/java/org/apache/activemq/broker/TopicDomain.java
Modified: activemq/sandbox/activemq-flow/src/main/java/org/apache/activemq/broker/Domain.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/src/main/java/org/apache/activemq/broker/Domain.java?rev=753070&r1=753069&r2=753070&view=diff
==============================================================================
--- activemq/sandbox/activemq-flow/src/main/java/org/apache/activemq/broker/Domain.java (original)
+++ activemq/sandbox/activemq-flow/src/main/java/org/apache/activemq/broker/Domain.java Fri Mar 13 00:08:47 2009
@@ -12,12 +12,12 @@
*/
public interface Domain {
- public void add(AsciiBuffer name, Object value);
+ public void add(AsciiBuffer destinationName, Object destination);
- public Object remove(AsciiBuffer name);
+ public Object remove(AsciiBuffer destinationName);
- public void bind(AsciiBuffer name, DeliveryTarget dt);
+ public void bind(AsciiBuffer destinationName, DeliveryTarget deliveryTarget);
- public Collection<DeliveryTarget> route(MessageDelivery msg);
+ public Collection<DeliveryTarget> route(AsciiBuffer destinationName, MessageDelivery message);
}
Modified: activemq/sandbox/activemq-flow/src/main/java/org/apache/activemq/broker/QueueDomain.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/src/main/java/org/apache/activemq/broker/QueueDomain.java?rev=753070&r1=753069&r2=753070&view=diff
==============================================================================
--- activemq/sandbox/activemq-flow/src/main/java/org/apache/activemq/broker/QueueDomain.java (original)
+++ activemq/sandbox/activemq-flow/src/main/java/org/apache/activemq/broker/QueueDomain.java Fri Mar 13 00:08:47 2009
@@ -21,8 +21,8 @@
queues.get(name).addConsumer(deliveryTarget);
}
- public Collection<DeliveryTarget> route(MessageDelivery delivery) {
- Queue queue = queues.get(delivery.getDestination().getName());
+ public Collection<DeliveryTarget> route(AsciiBuffer name, MessageDelivery delivery) {
+ Queue queue = queues.get(name);
if( queue!=null ) {
ArrayList<DeliveryTarget> rc = new ArrayList<DeliveryTarget>(1);
rc.add(queue);
Modified: activemq/sandbox/activemq-flow/src/main/java/org/apache/activemq/broker/Router.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/src/main/java/org/apache/activemq/broker/Router.java?rev=753070&r1=753069&r2=753070&view=diff
==============================================================================
--- activemq/sandbox/activemq-flow/src/main/java/org/apache/activemq/broker/Router.java (original)
+++ activemq/sandbox/activemq-flow/src/main/java/org/apache/activemq/broker/Router.java Fri Mar 13 00:08:47 2009
@@ -5,6 +5,7 @@
import java.util.Collection;
import java.util.HashMap;
+import java.util.HashSet;
import org.apache.activemq.protobuf.AsciiBuffer;
@@ -39,8 +40,25 @@
}
public Collection<DeliveryTarget> route(MessageDelivery msg) {
- Domain domain = domains.get(msg.getDestination().getDomain());
- return domain.route(msg);
+ return route(msg.getDestination(), msg);
+ }
+
+ private Collection<DeliveryTarget> route(Destination destination, MessageDelivery msg) {
+ // Handles routing to composite/multi destinations.
+ Collection<Destination> destinationList = destination.getDestinations();
+ if( destinationList == null ) {
+ Domain domain = domains.get(destination.getDomain());
+ return domain.route(destination.getName(), msg);
+ } else {
+ HashSet<DeliveryTarget> rc = new HashSet<DeliveryTarget>();
+ for (Destination d : destinationList) {
+ Collection<DeliveryTarget> t = route(d, msg);
+ if( t!=null ) {
+ rc.addAll(t);
+ }
+ }
+ return rc;
+ }
}
}
\ No newline at end of file
Modified: activemq/sandbox/activemq-flow/src/main/java/org/apache/activemq/broker/TopicDomain.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/src/main/java/org/apache/activemq/broker/TopicDomain.java?rev=753070&r1=753069&r2=753070&view=diff
==============================================================================
--- activemq/sandbox/activemq-flow/src/main/java/org/apache/activemq/broker/TopicDomain.java (original)
+++ activemq/sandbox/activemq-flow/src/main/java/org/apache/activemq/broker/TopicDomain.java Fri Mar 13 00:08:47 2009
@@ -25,8 +25,8 @@
targets.add(target);
}
- public Collection<DeliveryTarget> route(MessageDelivery delivery) {
- return topicsTargets.get(delivery.getDestination().getName());
+ public Collection<DeliveryTarget> route(AsciiBuffer name, MessageDelivery delivery) {
+ return topicsTargets.get(name);
}
}