active的Broker的应用与启动方式
Posted qlqwjy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了active的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。
嵌入式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&wireFormat.maxFrameSize=104857600"/> </transportConnectors> </broker> </beans>
以上是关于active的Broker的应用与启动方式的主要内容,如果未能解决你的问题,请参考以下文章
一张图,理顺 Spring Boot应用在启动阶段执行代码的几种方式
一张图,理顺 Spring Boot应用在启动阶段执行代码的几种方式
一张图帮你记忆,Spring Boot 应用在启动阶段执行代码的几种方式
一张图,理顺 Spring Boot应用在启动阶段执行代码的几种方式