[prev in list] [next in list] [prev in thread] [next in thread] 

List:       activemq-dev
Subject:    [jira] Resolved: (AMQ-877) Patch: refactoring to allow alternative
From:       "Rob Davies (JIRA)" <jira () apache ! org>
Date:       2006-08-31 13:55:23
Message-ID: 22305335.1157032523886.JavaMail.jira () brutus
[Download RAW message or body]

     [ https://issues.apache.org/activemq/browse/AMQ-877?page=all ]

Rob Davies resolved AMQ-877.
----------------------------

    Resolution: Fixed

> 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: destinationFactoryActiveMQ_438704.patch, \
> 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

        


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic