[ https://issues.apache.org/activemq/browse/AMQ-877?page=all ]
Rob Davies reassigned AMQ-877:
------------------------------
Assignee: Rob Davies (was: james strachan)
> Patch: refactoring to allow alternative (using different storage interface)
> Destinations implementations.
> ---------------------------------------------------------------------------------------------------------
>
> Key: AMQ-877
> URL: https://issues.apache.org/activemq/browse/AMQ-877
> Project: ActiveMQ
> Issue Type: Improvement
> Components: Broker
> Affects Versions: 4.x
> Reporter: Maxim Fateev
> Assigned To: Rob Davies
> Fix For: 4.1
>
> Attachments: destinationFactoryActiveMQPatch.txt
>
>
> We were looking at alternate message persistence mechanisms that can co-exist
> in current ActiveMQ code base and we are thinking of a mechanism that is
> somewhat incompatible with the current MessageStore and PersistenceAdapter
> APIs. Unfortunately, the current ActiveMQ broker doesn't allow for such a
> change as the PersistenceAdapter and MessageStore interfaces are referenced
> directly by the RegionBroker and by both the Queue and Topic region
> implementations. Therefore, we are proposing a relatively small backwards
> compatible refactoring of the broker code that would eliminate all
> dependencies on the PersistenceAdapter and MessageStore interfaces from those
> classes that do not use them directly. This refactoring would also allow
> creation of a custom Destination implementation that may use an alternative
> persistence mechanism on a destination by destination basis (which is exactly
> what we need to do).
> The main idea behind the refactoring is to replace many references to
> PersistenceAdapter with a new interface: DestinationFactory:
> public abstract class DestinationFactory {
> abstract public Destination createDestination(ConnectionContext
> context, ActiveMQDestination destination, DestinationStatistics
> destinationStatistics) throws Exception;
> abstract public Set getDestinations();
> abstract public SubscriptionInfo[]
> getAllDurableSubscriptions(ActiveMQTopic topic) throws IOException;
> abstract public long getLastMessageBrokerSequenceId() throws
> IOException;
> abstract public void setRegionBroker(RegionBroker regionBroker);
> }
> Note that DestinationFactory doesn't mandate any specific persistence
> mechanism. The classes that would reference it instead of PersistenceAdapter
> are: RegionBroker, AbstractRegion, QueueRegion, and TopicRegion. Also, the
> AbstractRegion.createDestination method would be changed from abstract to an
> implementation that uses DestinationFactory to create a destination.
> BrokerService could be changed to use DestinationFactory if one is
> provided. If none is provided, it will create a DestinationFactory
> implementation that instantiates Queue and Topic using PersistenceAdapter as
> it does currently. Hence, full backwards compatibility will be maintained.
> Patch is attached.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://issues.apache.org/activemq/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira