ActiveMQ使用启动参数设置属性

ActiveMQ使用启动参数设置属性,activemq,Activemq,是否有方法将activemq.xml中定义的某些属性(如共享存储)设置为启动参数 <kahaDB directory="${data}/kahadb"/> 使用-Dparam=value运行amq似乎不起作用我发现这对您不起作用很奇怪,例如,我们目前正在使用以下代理配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans

是否有方法将activemq.xml中定义的某些属性(如共享存储)设置为启动参数

<kahaDB directory="${data}/kahadb"/>


使用-Dparam=value运行amq似乎不起作用

我发现这对您不起作用很奇怪,例如,我们目前正在使用以下代理配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:amq="http://activemq.apache.org/schema/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">

    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
        <property name="ignoreResourceNotFound" value="true" />
        <property name="ignoreUnresolvablePlaceholders" value="true" />
        <property name="locations">
            <list>
                <value>classpath:activemq.properties</value>
                <value>file:///${user.home}/activemq.properties</value>
                <value>file:///#{systemProperties['activemq.properties']}</value>
            </list>
        </property>
    </bean>

    <broker useJmx="${activemq.expose.jmx}" persistent="false"
        brokerName="${activemq.brokerName}"
        xmlns="http://activemq.apache.org/schema/core">
        <destinationPolicy>
            <policyMap>
                <policyEntries>
                    <policyEntry queue=">" enableAudit="false">
                        <networkBridgeFilterFactory>
                            <conditionalNetworkBridgeFilterFactory replayWhenNoConsumers="true"/>
                        </networkBridgeFilterFactory>
                    </policyEntry>
                </policyEntries>
            </policyMap>
        </destinationPolicy>
        <systemUsage>
            <systemUsage>
                <memoryUsage>
                    <memoryUsage limit="${activemq.memoryUsage}" />
                </memoryUsage>
                <tempUsage>
                    <tempUsage limit="${activemq.tempUsage}" />
                </tempUsage>
            </systemUsage>
        </systemUsage>
        <networkConnectors>
            <networkConnector
                name="queues"
                uri="static:(${activemq.otherBrokers})"
                networkTTL="3"
                decreaseNetworkConsumerPriority="true"
                conduitSubscriptions="false" >
                <excludedDestinations>
                    <topic physicalName=">" />
                </excludedDestinations>
            </networkConnector>
            <networkConnector
                name="topics"
                uri="static:(${activemq.otherBrokers})"
                networkTTL="3"
                decreaseNetworkConsumerPriority="true"
                conduitSubscriptions="true" >
                <excludedDestinations>
                    <queue physicalName=">" />
                </excludedDestinations>
            </networkConnector>
        </networkConnectors>
        <transportConnectors>
            <!-- expose a TCP transport for clients to use -->
            <transportConnector
                uri="${activemq.protocol}${activemq.host}:${activemq.tcp.port}"
                updateClusterClients="true"
                rebalanceClusterClients="true" />
            <transportConnector
                uri="${activemq.websocket.protocol}${activemq.websocket.host}:${activemq.websocket.port}"
                updateClusterClients="true"
                rebalanceClusterClients="true" />
        </transportConnectors>
    </broker>
</beans>

类路径:activemq.properties
文件://${user.home}/activemq.properties
文件://{systemProperties['activemq.properties']}
这里的属性通常是从给定的属性文件中读取的,但是我经常使用direct-djmv系统属性在一些测试中否决属性文件中的属性,并且从未遇到任何问题。我想您可以尝试使用#{systemProperties['property.name']}这种稍微复杂一些的语法,专门设置给定的属性是系统属性,而不是占位符

最后一点:您使用的是哪个版本的ActiveMQ,这个版本使用的是哪个版本的spring?我认为整个占位符语法是在Spring3.1前后添加的,所以确实是很久以前的事了,但这是我能想象为什么这对您不起作用的唯一原因