Abstract: Apache ActiveMQ is an open source message broker which fosters the communication from more than one client or server. This is a tutorial. This tutorial tells you how to establish ActiveMQ environment in your computer and write a producer and a consumer to communicate HelloWorld with C++.
Apache ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件,是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可运行。这篇博文将介绍如何在自己的电脑上搭建起ActiveMQ的环境并完成一个消息发送者和消息接收者互相通信HelloWorld的一个C++演示程序。
注:以下均为64位的安装过程,32位同理。
1 安装Java SDK
首先先确认自己的电脑有没有安装Java SDK,如果没安装Java SDK会报错,做法如下(如果已安装则跳过下面步骤):
- 下载
jre-8u45-windows-x64.exe
(链接)和java_ee_sdk-6u4-jdk7-windows-x64.exe
(链接) - 安装JRE(Java SE Runtime Environment)
jre-8u45-windows-x64.exe
,安装路径选默认:C:\Program Files\Java\jre1.8.0_144
- 安装J2EE
java_ee_sdk-6u4-jdk7-windows-x64.exe
,假如其被放在E盘下,打开CMD,进入安装程序所在目录 > e:回车 - 关键步骤:
java_ee_sdk-6u4-jdk7-windows-x64.exe -j "C:\Program Files\Java\jre1.8.0_144"
- 安装开始,可以选择自己设置的安装路径,例如
D:\glassfish3
,其它选项均可选择默认进行安装 - 安装SDK成功。
2 ActiveMQ服务端的安装
2.1 下载
首先下载apache-activemq-5.15.0-bin.zip
压缩文件,官方下载地址:http://activemq.apache.org/download.html
解压文件到本地目录下,从它的目录来说,还是很简单的:
- bin存放的是脚本文件
- conf存放的是基本配置文件
- data存放的是日志文件
- docs存放的是说明文档
- examples存放的是简单的实例
- lib存放的是activemq所需jar包
- webapps用于存放项目的目录
2.2 启动
找到\bin\win64目录下的activemq.bat文件,双击运行即可。
2.3 测试
ActiveMQ默认使用的TCP连接端口是61616, 通过查看该端口的信息可以测试ActiveMQ是否成功启动:netstat -an|find “61616”
1
2C:\Documents and Settings\Administrator>netstat -an|find "61616"
TCP 0.0.0.0:61616 0.0.0.0:0 LISTENING
2.4 监控
ActiveMQ默认启动时,启动了内置的jetty服务器,提供一个用于监控ActiveMQ的admin应用。
admin:http://127.0.0.1:8161/admin/,用户名和密码都是admin。
至此,服务端启动完毕。停止服务器,只需要按着Ctrl+Shift+C,之后输入Y即可。
3 依赖库的编译
首先编译依赖库:
libapr-1.dll
、libapr-1.lib
、libapriconv-1.lib
、libaprutil-1.lib
、libcppunit.lib
,libactivemq-cpp.lib
,一共1个dll文件、5个lib文件,而且生成有先后顺序,生成方法如下。
- 生成
libapr-1.dll
、libapr-1.lib
、libapriconv-1.lib
、libaprutil-1.lib
所需要的工程下载地址:http://apr.apache.org/download - 生成
libcppunit.lib
所需要的工程下载地址:https://sourceforge.net/projects/cppunit/ - 生成
libactivemq-cpp.lib
所需要的工程下载地址:http://activemq.apache.org/cms/download.html
3.1 生成libapr
下载apr-1.6.2-win32-src.zip
,解压缩后用cmake转成vs2010 x64的工程,把生成出来的apr.h
文件拷回解压缩的include文件夹,这时候的include文件夹也是之后生成库文件需要依赖的头文件,命名为apr
。
打开cmake生成的后的文件夹里面APR.sln
,选择好所需要的配置(如Release)和平台(如x64),编译libapr-1
工程,生成libapr-1.dll
和libapr-1.lib
。
3.2 生成libapriconv
下载apr-iconv-1.2.1-win32-src-r2.zip
,解压缩打开apriconv.dsp
,并转成vs2010版本。
将apr
文件夹拷进include文件夹,对工程属性进行配置,选择好所需要的配置(如Release)和平台(如x64),编译apriconv
工程,生成apriconv-1.lib
。
3.3 生成libaprutil
下载apr-util-1.6.0-win32-src.zip
,解压缩打开aprutil.dsp
,并转成vs2010版本。
将apr
文件夹拷进include文件夹,对工程属性进行配置,选择好所需要的配置(如Release)和平台(如x64),编译aprutil
工程,生成aprutil-1.lib
。
3.4 生成libcppunit
下载cppunit-1.12.1.tar.gz
,解压缩打开\src\cppunit\cppunit.dsp
,并转成vs2010版本。
选择好所需要的配置(如Release)和平台(如x64),编译cppunit
工程,生成cppunit.lib
,为了统一名字更名为libcppunit.lib
。
3.5 生成libactivemq
下载activemq-cpp-library-3.9.4-src.zip
,解压缩打开\vs2010-build\activemq-cpp.sln
。
将libapr、libapriconv、libaprutil、libcppunit自带的头文件文件夹拷到vs2010-build\include文件夹下,对工程属性进行配置,选择好所需要的配置(如Release)和平台(如x64),编译activemq-cpp
工程,生成libactivemq-cpp.lib
。
4 写出一个通过ActiveMQ通信的HelloWorld
新建一个vs2010的工程,在inc文件夹下拷贝libapr、libapriconv、libaprutil、libcppunit自带的头文件文件夹,以及libactivemq自带头文件文件夹中的examples和main文件夹,一共6个文件夹。
在\lib\x64文件夹下拷贝libapr-1.lib
、libapriconv-1.lib
、libaprutil-1.lib
、libcppunit.lib
,libactivemq-cpp.lib
,一共5个文件。
在\bin\x64文件夹下拷贝libapr-1.dll
(注:\bin\x86平台不需要此dll)。
在工程中新建main.cpp
,代码如下:
1 | /* |
代码中的参数useTopic
可以进行相关配置,从而实现是进行主题式还是序列式的通信。
配置好对工程属性进行配置,选择好所需要的配置(如Release)和平台(如x64),编译工程,启动ActiveMQ后运行工程,即可看到 producer和consumer在进行HelloWorld的通信。