Linux下安装ActiveMQ CPP
来源:互联网 发布:数据库工程师考试 编辑:程序博客网 时间:2024/06/06 03:57
ActiveMQ CPP
ActiveMQ CPP是用C++语言访问ActiveMQ的客户端开发库,也称cms(cpp message service),安装cms开发库需要先安装一些基础库。
(1)cppunit
打开http://activemq.apache.org/cms/building.html页面,这里介绍了cms build时用到的依赖库。
cppunit下载页面:
https://sourceforge.net/projects/cppunit/files/cppunit/1.12.1/
这里选择1.12.1版本,获取到下载地址后,在linux下可以用wget命令直接下载,或者下载完成后传到linux系统中。
tar解压后,进入目录,编译三部曲,configure、make、make install(install需要root权限): ./configure --prefix=/usr/local/cppunit/
make
make install
执行完后在/usr/local/cppunit/目录下可以看到头文件和库文件。
(2)apr
apr的全称为Apache Portable Runtime(Apache可移植运行时),Apache旗下有很多开源软件。
apr介绍页面:
http://apr.apache.org/download.cgi
这里选择最新的APR 1.5.2版本,地址为:
http://mirrors.hust.edu.cn/apache//apr/apr-1.5.2.tar.gz
同上,解压进入目录,三部曲: ./configure --prefix=/usr/local/apr/
make
make install
(3)apr-util
这里选择最新的APR-util 1.5.4版本,下载地址为:
http://mirrors.hust.edu.cn/apache//apr/apr-util-1.5.4.tar.gz
解压编译: ./configure --prefix=/usr/local/aprutil --with-apr=/usr/local/apr/
make
make install
(4)apr-iconv
这里选择最新的APR iconv 1.2.1版本,地址为:
http://mirrors.hust.edu.cn/apache//apr/apr-iconv-1.2.1.tar.gz
解压编译: ./configure --prefix=/usr/local/apr-iconv/ --with-apr=/usr/local/apr/
make
make install
(5)openssl
这里选择openssl 1.0.0a版本,下载地址为:
http://www.openssl.org/source/openssl-1.0.0a.tar.gz
解压编译: ./config --prefix=/usr/local/openssl/
make
make install
若出现报错
cms.pod around line 457: Expected text after =item, not a number
在root权限下,执行rm -f /usr/bin/pod2man 然后重新make install
(6)ActiveMQ-CPP
这里选择最新的ActiveMQ-CPP 3.9.3版本,下载页面为:
http://activemq.apache.org/cms/activemq-cpp-393-release.html
解压编译: ./configure --prefix=/usr/local/ActiveMQ-CPP --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/aprutil --with-cppunit=/usr/local/cppunit --with-openssl=/usr/local/openssl
make
make install
若在make时报错,提示找不到ssl库
/usr/bin/ld: cannot find -lssl
进入到 /usr/local/openssl目录,将lib64目录复制一份,复制的新目录名为lib,命令:cp -r lib64 lib,这是由于make时使用的 /usr/local/openssl/lib路径导致。
测试程序
至此编译工作完成,在/usr/local目录下生成了6个目录,分别为ActiveMQ-CPP、apr、apr-iconv、aprutil、cppunit、openssl。
下面编写一段测试代码(test.cpp),用于检测cms开发库是否可用。
#include <activemq/library/ActiveMQCPP.h>#include <decaf/lang/Thread.h>#include <decaf/lang/Runnable.h>#include <decaf/util/concurrent/CountDownLatch.h>#include <decaf/lang/Integer.h>#include <decaf/lang/Long.h>#include <decaf/lang/System.h>#include <activemq/core/ActiveMQConnectionFactory.h>#include <activemq/util/Config.h>#include <cms/Connection.h>#include <cms/Session.h>#include <cms/TextMessage.h>#include <cms/BytesMessage.h>#include <cms/MapMessage.h>#include <cms/ExceptionListener.h>#include <cms/MessageListener.h>#include <stdlib.h>#include <stdio.h>#include <iostream>#include <memory>using namespace activemq::core;using namespace decaf::util::concurrent;using namespace decaf::util;using namespace decaf::lang;using namespace cms;using namespace std;int main(){ activemq::library::ActiveMQCPP::initializeLibrary(); Connection* conn; Session* sess; Destination* dest; MessageProducer* producer; std::string brokerurl("failover:(tcp://192.168.1.104:61616)"); try { auto_ptr<ConnectionFactory> connFactory(ConnectionFactory::createCMSConnectionFactory(brokerurl)); conn = connFactory->createConnection(); conn->start(); sess = conn->createSession(Session::AUTO_ACKNOWLEDGE); dest = sess->createQueue("QueueFromLinuxTest"); producer = sess->createProducer(dest); producer->setDeliveryMode(DeliveryMode::NON_PERSISTENT); string text("Hello ActiveMQ from LinuxTest"); for (int i = 0; i < 3; ++i) { TextMessage* msg = sess->createTextMessage(text); msg->setIntProperty("IntProp1", i); producer->send(msg); cout << "SEND-> " << text << endl; delete msg; } } catch (CMSException& e) { e.printStackTrace(); } try { delete dest; dest = NULL; delete producer; producer = NULL; if (NULL != sess) sess->close(); if (NULL != conn) conn->close(); delete sess; sess = NULL; delete conn; conn = NULL; } catch (CMSException& e) { e.printStackTrace(); } cout << "test end" << endl; activemq::library::ActiveMQCPP::shutdownLibrary();}
编译命令: g++ test.cpp -I/usr/local/ActiveMQ-CPP/include/activemq-cpp-3.9.3 -I/usr/local/apr/include/apr-1 -L/usr/local/ActiveMQ-CPP/lib -lactivemq-cpp
其中-I指定了两个include目录,-L指定了一个库目录,-l指定了一个链接库。
运行时,需要将libactivemq-cpp.so、libactivemq-cpp.so.19、libactivemq-cpp.so.19.0.3这3个运行时库复制到/usr/lib64目录下。
GOOD LUCK!!!
- Linux下安装ActiveMQ CPP
- Linux下安装ActiveMQ CPP
- 在linux下安装Activemq-Cpp
- Linux下安装ActiveMQ CPP Library 3.9.4
- linux下安装ActiveMQ
- Linux下activeMQ安装
- linux下安装activeMq
- linux下activeMQ安装
- linux activemq-cpp编译
- Windows/Linux 下安装ActiveMQ
- linux环境下安装activeMQ
- [App] linux 下 ActiveMQ 安装
- ActiveMQ-CPP在linux环境下的编译
- ActiveMQ-CPP在LINUX环境下的编译
- linux下automake编译ActiveMQ-Cpp为release版本,
- windows下ActiveMQ-CPP编译
- Linux下安装ActiveMQ 5.4.2
- Linux下activeMQ的安装和启动
- myeclipse和svn通过代理方式更新代码
- 赶集网mysql开发36军规
- 共同学习Java源码--常用数据类型--String(八)
- linux下安装jdk
- aop
- Linux下安装ActiveMQ CPP
- 【BZOJ2103】【BZOJ2447】Fire 消防站【DFS】【TreeDP】
- 如何使用Nikto漏洞扫描工具检测网站安全
- Zookeeper 的学习与运用
- aop注解
- php让浏览器下载txt等类型的文件
- LRU和LFU的区别
- Elasticsearch 配置详解
- js--闭包,作用域链