• ActiveMQ学习笔记(5)----Broker的启动方式


    Broker:相当于一个ActiveMQ服务器实例,在实际的开发中我们可以启动多个Broker.

    命令行启动参数示例如下:

      1. activemq start 使用默认的activemq.xml来启动。

      2. activemq start xbean:file../conf/active-2.xml来使用指定的配置文件来启动

      3. 如果不指定file,也就是xbean:activemq-2.xml,那么xml必须在classpath下

    使用ActiveMQ来构建Java运用

      这里主要将ActiveMQ Broker作为独立的消息服务器来构建JAVA应用。

      ActiveMQ也支持在vm中通信基于嵌入式的broker,能够无缝的集成其他的java应用。

    1. 嵌入式Borker启动

      BrokerService启动Broker,示例如下:

    package com.wangx.activemq.broker;
    
    
    import org.apache.activemq.broker.BrokerFactory;
    import org.apache.activemq.broker.BrokerService;
    
    import java.net.URI;
    
    public class InnerBroker {
    
        public static void main(String[] args) throws Exception {
            //基于嵌入式的Broker启动broker
            BrokerService broker = new BrokerService();
    
            broker.setUseJmx(true);
            //指定访问地址
            broker.addConnector("tcp://localhost:8888");
            broker.start();
        }
    }

      使用前面的生产者和消费者,在初始化连接工厂时将链接改为tcp://localhost:8888,可以成功的发送和接收消息。

    基于BrokerFactory启动broker,示例如下:

    package com.wangx.activemq.broker;
    
    
    import org.apache.activemq.broker.BrokerFactory;
    import org.apache.activemq.broker.BrokerService;
    
    import java.net.URI;
    
    public class InnerBroker {
    
        public static void main(String[] args) throws Exception {
            //properties.properties 放到classpath下
            String URI = "properties:properties.properties";
            BrokerService brokerService = BrokerFactory.createBroker(new URI(URI));
            brokerService.addConnector("tcp://localhost:8888");
            brokerService.start();
        }
    }
    properties.properties文件如下:
    useJms=true
    persistent=false
    # 随意设置的broker的name
    bokerName=Cheese

      使用前面的生产者和消费者,在初始化连接工厂时将链接改为tcp://localhost:8888,可以成功的发送和接收消息。

    使用Spring来集成Broker

      首先引入Spring的核心以来。pom文件如下:

     <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-core</artifactId>
          <version>5.1.2.RELEASE</version>
        </dependency>

      Spring配置文件如下applicationContext.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns="http://www.springframework.org/schema/beans" 
            xsi:schemaLocation="http://www.springframework.org/schema/beans 
                                http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">
    
    <!--使用最简单的Spring集成Broker,复杂的会有一些权限控制,这里先不演示
        由于指定了init-method="start" destroy-method="stop" 所以这里的只需要读取spring的配置文件,将其装载到bean容器中,
        启动和关闭broker都交由spring的生命周期来管理,使用 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        启动,即可开启Broker,不需要任何多余的代码
    -->
    <bean id="broker" 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:8888</value>
            </list>
        </property>
    
    </bean>
    </beans>
    使用最简单的Spring集成Broker,复杂的会有一些权限控制,这里先不演示,由于指定了init-method="start" destroy-method="stop" 所以这里的只需要读取spring的配置文件,将其装载到bean容器中,启动和关闭broker都交由spring的生命周期来管理,
    使用 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");启动,即可开启Broker,不需要任何多余的代码。启动类如下:
    package com.wangx.activemq.spring;
    
    import org.apache.xbean.spring.context.ClassPathXmlApplicationContext;
    import org.springframework.context.ApplicationContext;
    
    public class SpringBroker {
    
        public static void main(String[] args) {
            ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        }
    }

      使用前面的生产者和消费者,在初始化连接工厂时将链接改为tcp://localhost:8888,可以成功的发送和接收消息。

      还可以配置BrokerFactoryBean读取activemq.xml文件方式来集成Spring

      bean配置如下:

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

    2. ActiveMQ的启动

      1. 可以通过在应用程序中以编码的方式启动broker,例如broker.start();

        如果需要启动多个Broker,那么需要为每个broker设置不同的名字和host:port(地址)

        例如:

    package com.wangx.activemq.broker;
    
    
    import org.apache.activemq.broker.BrokerFactory;
    import org.apache.activemq.broker.BrokerService;
    
    import java.net.URI;
    
    public class InnerBroker {
    
        public static void main(String[] args) throws Exception {
            //基于嵌入式的Broker启动broker
            BrokerService broker = new BrokerService();
    
            broker.setUseJmx(true);
            broker.setBrokerName("one");
            //指定访问地址
            broker.addConnector("tcp://localhost:8888");
            broker.start();
        }
    }

    2. 通过Spring启动,前面都已经演示过了。

  • 相关阅读:
    5W1H聊开源之What——开源协议有哪些?
    5W1H聊开源之What——开源是什么?
    测试开发专题-开篇
    痞子衡嵌入式:在串口波特率识别实例里逐步展示i.MXRT上提升代码执行性能的十八般武艺
    痞子衡嵌入式:以i.MXRT1xxx的GPIO模块为例谈谈中断处理函数(IRQHandler)的标准流程
    痞子衡嵌入式:超级下载算法RT-UFL v1.0发布,附J-Link下安装教程
    《痞子衡嵌入式半月刊》 第 34 期
    痞子衡嵌入式:Keil在线调试时设不同复位类型可能会导致i.MXRT下调试现象不一致(J-Link/DAPLink)
    痞子衡嵌入式:超级下载算法(RT-UFL)开发笔记番外(1)
    痞子衡嵌入式:嵌入式里串口(UART)自动波特率识别程序设计与实现(轮询)
  • 原文地址:https://www.cnblogs.com/Eternally-dream/p/9880350.html
Copyright © 2020-2023  润新知