• ActiveMQ中Broker的应用与启动方式


      Broker:英语有代理的意思,在activemq中,Broker就相当于一个Activemq实例。

    1. 命令行启动实例:

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

    E:activemqapache-activemq-5.15.6in>pwd
    /e/activemq/apache-activemq-5.15.6/bin
    
    E:activemqapache-activemq-5.15.6in>ls
    activemq            activemq.bat  win32  wrapper.jar
    activemq-admin.bat  activemq.jar  win64
    
    E:activemqapache-activemq-5.15.6in>activemq.bat
    Java Runtime: Oracle Corporation 1.8.0_121 C:Program FilesJava8jdk1.8.0_121jre
      Heap sizes: current=1005056k  free=989327k  max=1005056k
        JVM args: -Dcom.sun.management.jmxremote -Xms1G -Xmx1G -Djava.util.logging.config.file=logging.properties -Djava.se
    urity.auth.login.config=E:activemqapache-activemq-5.15.6in..conflogin.config -Dactivemq.classpath=E:activemqap
    che-activemq-5.15.6in..conf;E:activemqapache-activemq-5.15.6in../conf;E:activemqapache-activemq-5.15.6in.
    /conf; -Dactivemq.home=E:activemqapache-activemq-5.15.6in.. -Dactivemq.base=E:activemqapache-activemq-5.15.6in
    .. -Dactivemq.conf=E:activemqapache-activemq-5.15.6in..conf -Dactivemq.data=E:activemqapache-activemq-5.15.6i
    ..data -Djava.io.tmpdir=E:activemqapache-activemq-5.15.6in..data	mp
    Extensions classpath:
      [E:activemqapache-activemq-5.15.6in..lib,E:activemqapache-activemq-5.15.6in..libcamel,E:activemqapache
    activemq-5.15.6in..liboptional,E:activemqapache-activemq-5.15.6in..libweb,E:activemqapache-activemq-5.15.
    in..libextra]
    ACTIVEMQ_HOME: E:activemqapache-activemq-5.15.6in..
    ACTIVEMQ_BASE: E:activemqapache-activemq-5.15.6in..
    ACTIVEMQ_CONF: E:activemqapache-activemq-5.15.6in..conf
    ACTIVEMQ_DATA: E:activemqapache-activemq-5.15.6in..data
    Usage: Main [--extdir <dir>] [task] [task-options] [task data]
    
    Tasks:
        browse                   - Display selected messages in a specified destination.
        bstat                    - Performs a predefined query that displays useful statistics regarding the specified brok
    r
        consumer                 - Receives messages from the broker
        create                   - Creates a runnable broker instance in the specified path.
        decrypt                  - Decrypts given text
        dstat                    - Performs a predefined query that displays useful tabular statistics regarding the specif
    ed destination type
        encrypt                  - Encrypts given text
        export                   - Exports a stopped brokers data files to an archive file
        list                     - Lists all available brokers in the specified JMX context
        producer                 - Sends messages to the broker
        purge                    - Delete selected destination's messages that matches the message selector
        query                    - Display selected broker component's attributes and statistics.
        start                    - Creates and starts a broker using a configuration file, or a broker URI.
        stop                     - Stops a running broker specified by the broker name.
    
    Task Options (Options specific to each task):
        --extdir <dir>  - Add the jar files in the directory to the classpath.
        --version       - Display the version information.
        -h,-?,--help    - Display this help information. To display task specific help, use Main [task] -h,-?,--help
    
    Task Data:
        - Information needed by each specific task.
    
    JMX system property options:
        -Dactivemq.jmx.url=<jmx service uri> (default is: 'service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi')
        -Dactivemq.jmx.user=<user name>
        -Dactivemq.jmx.password=<password>
    
    
    E:activemqapache-activemq-5.15.6in>activemq.bat start
    Java Runtime: Oracle Corporation 1.8.0_121 C:Program FilesJava8jdk1.8.0_121jre
      Heap sizes: current=1005056k  free=989327k  max=1005056k

    启动后访问后台:

    2.activemq start xbean:file:../conf/activemq2.xml   使用指定的配置文件进行启动

    1.我们把con目录下的activemq2.xml重新命名为activemq2.xml

    2.再次直接start启动会报错:

    ERROR: org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path
    resource [activemq.xml]; nested exception is java.io.FileNotFoundException: class path resource [activemq.xml] cannot be
     opened because it does not exist
    org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resourc
    e [activemq.xml]; nested exception is java.io.FileNotFoundException: class path resource [activemq.xml] cannot be opened
     because it does not exist

    3.我们指定启动的xml文件位置再次启动可以启动成功

    activemq start xbean:file:../conf/activemq2.xml

    3.如果不指定file,也就是xbean:activemq2.xml,那么activemq2.xml必须在classpath目录下

    2.用activemq来构建java应用---不依赖于ActiveMQ应用,只需要jar包即可实现

       这里主要是用Activemq Broker作为独立的消息服务器来构建Java应用。简单的说,就是在java应用中启动activemq。这种方式会以进程的方式启动一个新的JVM来支持连接。

    嵌入式Broker启动

      下面的启动方式都不能通过http访问连接,要想测试是否启动成功只能通过收消息和发消息来测试。

    1.通过BrokerService方式启动

            BrokerService brokerService = new BrokerService();
            brokerService.setUseJmx(true);
            brokerService.addConnector("tcp://localhost:61616");
            brokerService.start();

    2.通过  BrokerFactory 启动

            String uri = "properties:broker.properties";
            BrokerService broker = BrokerFactory.createBroker(new URI(uri));
            broker.addConnector("tcp://localhost:61616");
            broker.start();

    broker.properties内容如下:

    useJmx=true
    persistent=false
    brokerName=QQQ

    当然上面的确定方式都有对应的整合Spring之后的启动方式。

    3.BrokerService方式整合spring启动

      单例模式的BrokerService,加载完成之后调用start方法即可。

        <!--Broker启动方式-->
        <bean id="brokerService" class="org.apache.activemq.broker.BrokerService" init-method="start" destroy-method="stop">
            <property name="brokerName" value="broker1"/>
            <property name="persistent" value="false"/>
            <property name="transportConnectorURIs">
                <list>
                    <value>tcp://localhost:61616</value>
                </list>
            </property>
        </bean>

    从上面也可以看出,一个Broker可以配置多个连接的URI,如下面配置:(端口必须不同)

        <!--Broker启动方式-->
        <bean id="brokerService" class="org.apache.activemq.broker.BrokerService" init-method="start" destroy-method="stop">
            <property name="brokerName" value="broker1"/>
            <property name="persistent" value="false"/>
            <property name="transportConnectorURIs">
                <list>
                    <value>tcp://localhost:61616</value>
                    <value>tcp://localhost:61618</value>
                </list>
            </property>
        </bean>

    4.通过  BrokerFactory 结合spring启动

    spring的主配置文件:

        <!--Broker启动方式-->
        <bean id="brokerService" class="org.apache.activemq.xbean.BrokerFactoryBean">
            <property name="config" value="activemq.xml"/>
            <property name="start" value="true"/>
        </bean>

     activemq.xml位于classpath下,内容如下:

    <beans
            xmlns="http://www.springframework.org/schema/beans"
            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">
    
        <!--
            The <broker> element is used to configure the ActiveMQ broker.
        -->
        <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}">
    
            <destinationPolicy>
                <policyMap>
                    <policyEntries>
                        <policyEntry topic=">" >
                            <!-- 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:
    
                                 http://activemq.apache.org/slow-consumer-handling.html
    
                            -->
                            <pendingMessageLimitStrategy>
                                <constantPendingMessageLimitStrategy limit="1000"/>
                            </pendingMessageLimitStrategy>
                        </policyEntry>
                    </policyEntries>
                </policyMap>
            </destinationPolicy>
    
    
            <!--
              The systemUsage controls the maximum amount of space the broker will
              use before disabling caching and/or slowing down producers. For more information, see:
              http://activemq.apache.org/producer-flow-control.html
            -->
            <systemUsage>
                <systemUsage>
                    <storeUsage>
                        <storeUsage limit="100 gb"/>
                    </storeUsage>
                    <tempUsage>
                        <tempUsage limit="50 gb"/>
                    </tempUsage>
                </systemUsage>
            </systemUsage>
    
            <transportConnectors>
                <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
                <transportConnector name="openwire" uri="tcp://localhost:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            </transportConnectors>
        </broker>
    </beans>

    3.ActiveMQ的Broker方式启动多个broker的方法

    1.复制conf文件夹并重新命名为conf2

    2.修改conf2文件下的activemq.xml

    修改brokerName

    修改持久化的数据目录

    修改transportConnector的端口,要与第一个默认的不同

            <transportConnectors>
                <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
                <transportConnector name="openwire" uri="tcp://0.0.0.0:61617?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            </transportConnectors>

    3.修改conf2jetty.xml,主要是改端口

        <bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
                 <!-- the default port number for the web console -->
            <property name="host" value="0.0.0.0"/>
            <property name="port" value="8162"/>
        </bean>

    4.复制bin目录下面的activemq.bat并命名为activemq2.bat(如果是linux操作系统复制activemq)

    5.修改activemq2.bat中的配置文件目录:

    6.启动两个broker (如果是linux还需要赋予上面复制后的文件可执行权限 chmod +x activemq2)

     activemq2.bat start  和 activemq.bat start

     7.http界面查看jetty服务器

     

  • 相关阅读:
    Orleans介绍
    Orleans入门
    mongodb for windows安装
    ASP.NET Identity
    OWIN与Katana
    手动搭建ABP2.1.3 Zero——基础框架
    ABP学习笔记
    ABP-Zero模块
    ABP单元测试
    ABP-JavaScript API
  • 原文地址:https://www.cnblogs.com/qlqwjy/p/10463660.html
Copyright © 2020-2023  润新知