org.apache.activemq.broker.region.policy
Interface DispatchPolicy

All Known Implementing Classes:
PriorityNetworkDispatchPolicy, RoundRobinDispatchPolicy, SimpleDispatchPolicy, StrictOrderDispatchPolicy

public interface DispatchPolicy

Abstraction to allow different dispatching policies to be plugged into the region implementations. This is used by a queue to deliver messages to the matching subscriptions.


Method Summary
 boolean dispatch(MessageReference node, MessageEvaluationContext msgContext, java.util.List<Subscription> consumers)
          Decides how to dispatch a selected message to a collection of consumers.
 

Method Detail

dispatch

boolean dispatch(MessageReference node,
                 MessageEvaluationContext msgContext,
                 java.util.List<Subscription> consumers)
                 throws java.lang.Exception
Decides how to dispatch a selected message to a collection of consumers. A safe approach is to dispatch to every subscription that matches. Queue Subscriptions that have not exceeded their pre-fetch limit will attempt to lock the message before dispatching to the client. First subscription to lock the message wins. Order of dispatching to the subscriptions matters since a subscription with a large pre-fetch may take all the messages if he is always dispatched to first. Once a message has been locked, it does not need to be dispatched to any further subscriptions. The list will be safe to iterate over when this method is called

Returns:
true if at least one consumer was dispatched or false if there are no active subscriptions that could be dispatched
Throws:
java.lang.Exception


Copyright © 2005-2011. All Rights Reserved.