ActiveMQ从入门到精通——Broker的启动方式

622 阅读2分钟

引言

在实际项目开发过程中,对于ActiveMQ的启动更多是独立进程进行启动,但也不排除需要嵌入到程序中与业务系统共进程的方式一起使用,因此在本章我们主要介绍Broker的几种启动方式

启动方式介绍

常规启动方式介绍

  • Broker: 即就是一个ActiveMQ服务端程序
  • 常规的命令启动方式:
  1. activemq start 使用默认的activemq.xml来启动
  2. activemq start xbean:file:../conf/activemq-2.xml 使用指定的配置文件来启动
  3. 如果不指定file(也就是xbean:activemq-2.xml),那么对应的xml必须在classpath下面
  • 用ActiveMQ来构建Java应用 这里主要是将用ActiveMQ Broker作为独立的消息服务器来构建Java应用。ActiveMQ也支持在vm中通讯基于嵌入式的Broker,能够无缝的集成其它Java应用

在Java程序中嵌入ActiveMQ

硬编码启动

启动方式1(Broker Service启动)

    BrokerService brokerService = new BrokerService();
    brokerService.setUseJmx(true);
    brokerService.addConnector("tcp://127.0.0.1:61616");
    brokerService.start();
    System.out.println("Broker 启动成功!");

启动方式2(BrokerFactory 启动)

String uri = "properties:activemq.properties";
BrokerService brokerService =BrokerFactory.createBroker(new URI(uri));
brokerService.addConnector("tcp://127.0.0.1:61616");
brokerService.start();
System.out.println("Broker 启动成功!");

activemq.properties

userJms=true
persistent=false
brokerName=MyBroker

基于Spring启动

集成Spring启动方式1

通过Spring以BrokerService启动

<bean id="activemqBroker" class="org.apache.activemq.broker.BrokerService" init-method="start" destroy-method="stop">
    <property name="brokerName" value="MyBroker"/>
    <property name="persistent" value="false"/>
    <property name="transportConnectorURIs">
    <list>
        <value>tcp://localhost:61616</value>
    </list>
    </property>
</bean>

Java代码

public static void main(String[] args) {
    ApplicationContext context = new ClassPathXmlApplicationContext("application-context.xml");
    System.out.println("Broker is startd!");
}

集成Spring启动方式2

通过Spring以BrokerFactoryBean启动Broker 在Bean文件引入工厂类

<bean id="activemqBrokderFactory" class="org.apache.activemq.xbean.BrokerFactoryBean">
    <property name="config" value="activemq-properties.xml"/>
    <property name="start" value="true"/>
</bean>

activemq-properties.xml主要内容如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:amq="http://activemq.apache.org/schema/core"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
    <broker useJmx="false" persistent="false"
    xmlns="http://activemq.apache.org/schema/core">
        <transportConnectors>
            <transportConnector uri="tcp://localhost:61616"/>
        </transportConnectors>
    </broker>
</beans>

集成Spring启动方式3

以amq:broker标签配置启动

<amq:broker brokerName="MyBroker" start="true" persistent="false">
    <amq:transportConnectors>
        <amq:transportConnector uri="tcp://localhost:61616"/>
    </amq:transportConnectors>
</amq:broker>

总结:

本文主要介绍了ActiveMQ启动的几种方式,1.独立进程启动与嵌入到应用程序中启动,其中对于嵌入到应用程序中启动分别介绍了硬编码启动与Spring框架集成启动两种方式,无论是哪种都有两种,制定BrokerSerivce和使用Factory进行启动,原理都差不多,看自己需求适当采用即可