版本 5 XML 配置

使用 ActiveMQ Classic 5 > 版本 5 XML 配置

  • 传输连接器,包含传输通道和线格式 TODO: 添加一个链接到解释什么是传输连接器,以及如何配置和使用它们的页面。
  • 使用网络通道或发现的网络连接器 TODO: 添加一个链接到解释什么是网络连接器,以及如何配置和使用它们的页面。
  • 发现代理 TODO: 添加一个链接到解释什么是发现代理,以及如何配置和使用它们的页面。
  • 持久性提供程序和位置 TODO: 添加一个链接到解释什么是持久性提供程序,以及如何配置和使用它们的页面。
  • 自定义消息容器(例如,最近图像缓存等)

我们使用 XBean 执行 XML 配置。

有关 XML 的详细信息,请参见 XML 参考

小心代理名称和 URI

确保您在代理名称中不使用任何奇怪的字符,因为它们会被转换为 URI,不允许使用下划线等

示例

默认 ActiveMQ Classic 配置:当前默认配置

<beans
  xmlns="http://www.springframework.org/schema/beans"
  xmlns:amq="https://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
  https://activemq.apache.org/schema/core https://activemq.apache.org/schema/core/activemq-core.xsd">

    <!-- Allows us to use system properties as variables in this configuration file -->
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <value>file:${activemq.conf}/credentials.properties</value>
        </property>
    </bean>

    <!--
        The <broker> element is used to configure the ActiveMQ Classic broker.
    -->
    <broker xmlns="https://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}">

        <!--
            For better performances use VM cursor and small memory limit.
            For more information, see:

            https://activemq.apache.org/message-cursors.html

            Also, if your producer is "hanging", it's probably due to producer flow control.
            For more information, see:
            https://activemq.apache.org/producer-flow-control.html
        -->

        <destinationPolicy>
            <policyMap>
              <policyEntries>
                <policyEntry topic=">" producerFlowControl="true">
                    <!-- The constantPendingMessageLimitStrategy is used to prevent
                         slow topic consumers to block producers and affect other consumers
                         by limiting the number of messages that are retained
                         For more information, see:

                         https://activemq.apache.org/slow-consumer-handling.html

                    -->
                  <pendingMessageLimitStrategy>
                    <constantPendingMessageLimitStrategy limit="1000"/>
                  </pendingMessageLimitStrategy>
                </policyEntry>
                <policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb">
                  <!-- Use VM cursor for better latency
                       For more information, see:

                       https://activemq.apache.org/message-cursors.html

                  <pendingQueuePolicy>
                    <vmQueueCursor/>
                  </pendingQueuePolicy>
                  -->
                </policyEntry>
              </policyEntries>
            </policyMap>
        </destinationPolicy>


        <!--
            The managementContext is used to configure how ActiveMQ Classic is exposed in
            JMX. By default, ActiveMQ Classic uses the MBean server that is started by
            the JVM. For more information, see:

            https://activemq.apache.org/jmx.html
        -->
        <managementContext>
            <managementContext createConnector="false"/>
        </managementContext>

        <!--
            Configure message persistence for the broker. The default persistence
            mechanism is the KahaDB store (identified by the kahaDB tag).
            For more information, see:

            https://activemq.apache.org/persistence.html
        -->
        <persistenceAdapter>
            <kahaDB directory="${activemq.data}/kahadb"/>
        </persistenceAdapter>


          <!--
            The systemUsage controls the maximum amount of space the broker will
            use before slowing down producers. For more information, see:
            https://activemq.apache.org/producer-flow-control.html
            If using ActiveMQ Classic embedded - the following limits could safely be used:

        <systemUsage>
            <systemUsage>
                <memoryUsage>
                    <memoryUsage limit="20 mb"/>
                </memoryUsage>
                <storeUsage>
                    <storeUsage limit="1 gb"/>
                </storeUsage>
                <tempUsage>
                    <tempUsage limit="100 mb"/>
                </tempUsage>
            </systemUsage>
        </systemUsage>
        -->
          <systemUsage>
            <systemUsage>
                <memoryUsage>
                    <memoryUsage limit="64 mb"/>
                </memoryUsage>
                <storeUsage>
                    <storeUsage limit="100 gb"/>
                </storeUsage>
                <tempUsage>
                    <tempUsage limit="50 gb"/>
                </tempUsage>
            </systemUsage>
        </systemUsage>

        <!--
            The transport connectors expose ActiveMQ Classic over a given protocol to
            clients and other brokers. For more information, see:

            https://activemq.apache.org/configuring-transports.html
        -->
        <transportConnectors>
            <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
            <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
        </transportConnectors>

        <!-- destroy the spring context on shutdown to stop jetty -->
        <shutdownHooks>
            <bean xmlns="http://www.springframework.org/schema/beans" class="org.apache.activemq.hooks.SpringContextHook" />
        </shutdownHooks>

    </broker>

    <!--
        Enable web consoles, REST and Ajax APIs and demos

        Take a look at ${ACTIVEMQ_HOME}/conf/jetty.xml for more details
    -->
    <import resource="jetty.xml"/>

</beans>

从二进制发行版中,有一个 activemq 脚本,允许您轻松地在命令行中将消息代理作为独立进程运行,前提是您的 PATH 中包含 $ACTIVEMQ_HOME/bin 目录。

配置嵌入式代理

您还可以使用 XML 配置来配置 嵌入式代理。例如,使用 JNDI 配置机制,您可以执行以下操作 BrokerXmlConfigFromJNDITest

或者,如果您想通过 Java 代码显式地配置嵌入式代理,您可以执行以下操作 BrokerXmlConfigTest

用户提交的配置

我们有一个页面,允许用户提交其配置的详细信息。

背景

由于 ActiveMQ Classic 针对传输、线格式、持久性和许多其他内容有许多策略模式插件,因此我们希望将配置格式保持开放,以便您可以以任何您希望的方式配置和扩展 ActiveMQ Classic。

因此,我们使用 Spring XML 配置文件格式,它允许将任何 bean/POJO 互连和配置。但是,Spring 的 XML 有时可能过于冗长,因此我们在 Spring XML 中实现了一个 ActiveMQ Classic 扩展,它了解您可能执行的常见标准 ActiveMQ Classic 事项(例如,connector、wireFormat、serverTransport、persistence 等标签) - 但在任何时候,您都可以回退到 Spring 的正常操作方式(使用 bean、property 等标签)。

要查看我们使用的 XML 文件的文档或获取对 XSD/DTD 的访问权限,请参阅 XML 参考

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛标志和 Apache ActiveMQ 项目标志是 Apache 软件基金会的商标。版权所有 © 2024,Apache 软件基金会。根据 Apache 许可证 2.0 许可。