activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "james strachan (JIRA)" <j...@apache.org>
Subject [jira] Commented: (AMQ-877) Patch: refactoring to allow alternative (using different storage interface) Destinations implementations.
Date Fri, 25 Aug 2006 15:59:23 GMT
    [ https://issues.apache.org/activemq/browse/AMQ-877?page=comments#action_36854 ] 
            
james strachan commented on AMQ-877:
------------------------------------

I tried to apply this patch to the current trunk and it broke test cases. I wonder if trunk
has moved along a bit since your patch.

Could you try create another patch please and we can try again? Do the test cases all work
for you with your patch applied?

> 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

        

Mime
View raw message