Hard to set SystemUsage params via Spring
-----------------------------------------

                 Key: AMQ-1716
                 URL: https://issues.apache.org/activemq/browse/AMQ-1716
             Project: ActiveMQ
          Issue Type: Bug
          Components: Broker
    Affects Versions: 5.1.0
            Reporter: Steve Shabino
            Priority: Minor


I expected to be able to configure system usage parameters via Spring like this:

{code:title=Expected Spring SystemUsage Bean Definition}

<bean id="systemUsage"
        class="org.apache.activemq.usage.SystemUsage">
        <property name="memoryUsage">
                <bean class="org.apache.activemq.usage.MemoryUsage">
                        <property name="limit" value="100000000" />
                </bean>
        </property>
        <property name="storeUsage">
                <bean class="org.apache.activemq.usage.StoreUsage">
                        <property name="limit" value="50000000" />
                </bean>
        </property>
        <property name="tempUsage">
                <bean class="org.apache.activemq.usage.TempUsage">
                        <property name="limit" value="100000000" />
                </bean>
        </property>
</bean>

<bean id="myBroker"
                class="org.apache.activemq.broker.BrokerService" 
init-method="start"
                destroy-method="stop">
                <property name="systemUsage" ref="systemUsage" />
                <stuff missing here/>
</bean>
{code}

However, this does not work because the StorageUsage and TempUsage are never 
bound to the persistenceAdapter or tempDataStore.

This is the workaround I had to use:

{code:title=Required Spring SystemUsage Bean Definition}

        <bean id="persistenceAdapter"
                class="org.apache.activemq.store.amq.AMQPersistenceAdapter">
                <property name="syncOnWrite" value="false" />
                <property name="directory" value="file:c:\mqdata" />
        </bean>

        <bean id="tempDataStore"
                class="org.apache.activemq.kaha.StoreFactory" 
factory-method="open">
                <constructor-arg type="java.io.File">
                        <value>file:c:\mqtemp</value>
                </constructor-arg>
                <constructor-arg type="java.lang.String">
                        <value>rw</value>
                </constructor-arg>
        </bean>
        
        <bean id="systemUsage"
                class="org.apache.activemq.usage.SystemUsage">
        <constructor-arg type="java.lang.String"
                        value="localABSystemUsage" />
        <constructor-arg
                        type="org.apache.activemq.store.PersistenceAdapter"
                        ref="persistenceAdapter" />
        <constructor-arg type="org.apache.activemq.kaha.Store"
                        ref="tempDataStore" />
        <property name="memoryUsage">
                <bean class="org.apache.activemq.usage.MemoryUsage">
                        <property name="limit" value="100000000" />
                </bean>
        </property>
        <property name="storeUsage">
                <bean class="org.apache.activemq.usage.StoreUsage">
                        <property name="limit" value="50000000" />
                </bean>
        </property>
        <property name="tempUsage">
                <bean class="org.apache.activemq.usage.TempUsage">
                        <property name="limit" value="100000000" />
                </bean>
        </property>
</bean>

<bean id="myBroker"
                class="org.apache.activemq.broker.BrokerService" 
init-method="start"
                destroy-method="stop">

                <property name="systemUsage" ref="systemUsage" />
                <property name="persistenceAdapter" ref="persistenceAdapter" />
                <property name="tempDataStore" ref="tempDataStore" />

                <stuff missing here/>
                
        </bean>

{code}

One problem with this work-around is that old temp files are never purged as 
they would be if I simply configured the temp directory via the BrokerService 
interface.  It would be nice to have a more straight-forward means of 
configuring the BrokerService via Spring.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to