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

All Known Implementing Classes:
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.

Version:
$Revision$

Method Summary
 boolean dispatch(ConnectionContext newParam, MessageReference node, MessageEvaluationContext msgContext, List consumers)
          Decides how to dispatch a selected message to a collection of consumers.
 

Method Detail

dispatch

boolean dispatch(ConnectionContext newParam,
                 MessageReference node,
                 MessageEvaluationContext msgContext,
                 List consumers)
                 throws 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.

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


Copyright © 2011 Apache Software Foundation. All Rights Reserved.