Found a workaround ...

Topics are replaced by queues + persistent messages
Durable subscribers are replaced by other queues + camel routing to feed
them.

Camel routes can be updated live using JMX/Jolokia call
A benefit from using Camel is also that I can suspend the routing process.


For reference, here's my camel.xml file (works fine) :

<beans
   xmlns="http://www.springframework.org/schema/beans";  
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
   xsi:schemaLocation="
     http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd
     http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd";>
  
    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring";>

        <route>
            <description>From Log.Raw to specialized Log.Raw
queues</description>
            <from uri="activemq:queue:Log.Raw"/>
                        <choice>
                                
                                <when>
                                        
<spel>#{request.headers['domain'].equals('ORDO')}</spel>
                                        <to uri="activemq:queue:Log.Raw.ORDO"/>
                                </when>
                                <when>
                                        
<spel>#{request.headers['domain'].equals('BO')}</spel>
                                        <to uri="activemq:queue:Log.Raw.BO"/>
                                </when>
                                <otherwise>
                                        <to uri="activemq:queue:Log.Raw.Trash"/>
                                </otherwise>
                        </choice>
        </route>
    </camelContext>

    <bean id="activemq"
class="org.apache.activemq.camel.component.ActiveMQComponent" >
        <property name="connectionFactory">
          <bean class="org.apache.activemq.ActiveMQConnectionFactory">
            <property name="brokerURL" value="vm://task?create=false"/>
            <property name="userName" value="${activemq.username}"/>
            <property name="password" value="${activemq.password}"/>
          </bean>
        </property>
    </bean>

</beans>



--
View this message in context: 
http://activemq.2283324.n4.nabble.com/3-machine-cluster-replicated-leveldb-durable-subs-massive-message-loss-on-restart-tp4683411p4683473.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to