用ActiveMQ Broker作为独立的消息服务器来构建Java应用。ActiveMQ也支持在虚拟机中通信基于嵌入式的Broker,能够无缝的集成其他Java应用。
更新pom.xml,引入FastJson相关jar包。创建EmbedBroker类。
<!--FastJson-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.5</version>
</dependency>
package com.wsy.activemq;
import org.apache.activemq.broker.BrokerService;
public class EmbedBroker {
public static void main(String[] args) throws Exception {
BrokerService brokerService = new BrokerService();
brokerService.setUseJmx(true);
brokerService.addConnector("tcp://localhost:61616");
brokerService.start();
}
}
这就是把Broker创建在Java项目中,并启动,可以在console中看到下面这些内容,就说明已经启动起来了。
INFO | Using Persistence Adapter: KahaDBPersistenceAdapter[H:\IDEAProject\ActiveMQ\activemq-data\localhost\KahaDB]
INFO | JMX consoles can connect to service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
INFO | Page File: activemq-data\localhost\KahaDB\db.data. Recovering pageFile free list due to prior unclean shutdown..
INFO | Page File: activemq-data\localhost\KahaDB\db.data. Recovered pageFile free list of size: 0
INFO | KahaDB is version 6
INFO | PListStore:[H:\IDEAProject\ActiveMQ\activemq-data\localhost\tmp_storage] started
INFO | Apache ActiveMQ 5.15.9 (localhost, ID:DESKTOP-A1N39TR-1596-1578011589477-0:1) is starting
INFO | Listening for connections at: tcp://127.0.0.1:61616
INFO | Connector tcp://127.0.0.1:61616 started
INFO | Apache ActiveMQ 5.15.9 (localhost, ID:DESKTOP-A1N39TR-1596-1578011589477-0:1) started
INFO | For help or more information please see: http://activemq.apache.org
WARN | Store limit is 102400 mb (current store usage is 0 mb). The data directory: H:\IDEAProject\ActiveMQ\activemq-data\localhost\KahaDB only has 75690 mb of usable space. - resetting to maximum available disk space: 75690 mb
此时在IDEA的Console中或者cmd中输入jps -l,可以看到当前正在运行的Java线程。
26064 com.wsy.activemq.EmbedBroker
29620 org.jetbrains.jps.cmdline.Launcher
16268 sun.tools.jps.Jps
另外说下,如果输入命令后没有反应,那么,按照下面的步骤来做。
- 执行System.out.println(System.getProperties());。
- 查找属性java.io.tmpdir的值,是一个文件路径,打开文件路径,找hsperfdata_开头的一个文件夹。
- 进入文件夹,右键属性,安全标签,点击编辑按钮,点击添加,输入系统用户名,点击检查名称按钮,如果没有输入错误,就点击添加。
- 选中这个用户,设置完全控制权限。
- 点击应用,确定,再去运行程序,再执行jps -l命令查看,就可以看到了。
此时,EmbedBroker就是一台运行在本地的ActiveMQ服务器了,我们将JmsProducer和JmsConsumer里的ACTIVEMQ_URL中原先的虚拟机地址,改成localhost,运行生产者和消费者,可以发现,程序正常运行,此时我们就成功构建好了一台运行在本地的Broker。