activemq-cpp 설치하기activemq-cpp 설치하기

Posted at 2010. 9. 13. 22:20 | Posted in OpenSource
APR 1.3*
APR-UTIL 1.3*
이 설치되어 있어야 한다.

추가로 설치해줘야하는 라이브러리들
uuid-dev
libexpat1-dev
libcppunit-dev (test시 필요)
doxygen (문서 빌드시 필요)


[Makefile]

all:
    @echo "run \"make install\""

install: install-apr install-apr-util install-activemq-cpp

APR_PREFIX=/usr/local/apr
APR=apr-1.3.9
install-apr:
    tar xzf $(APR).tar.gz
    cd $(APR); ./configure --prefix=$(APR_PREFIX)
    make -C $(APR)
    make -C $(APR) install
    rm -rf $(APR)

APR_UTIL=apr-util-1.3.9
install-apr-util:
    tar xzf $(APR_UTIL).tar.gz
    cd $(APR_UTIL); ./configure --with-apr=$(APR_PREFIX)
    make -C $(APR_UTIL)
    make -C $(APR_UTIL) install
    rm -rf $(APR_UTIL)

ACTIVEMQ_CPP=activemq-cpp-library-3.1.1
install-activemq-cpp:
    tar xzf $(ACTIVEMQ_CPP)-src.tar.gz
    cd $(ACTIVEMQ_CPP); ./configure --with-apr=$(APR_PREFIX)
    make -C $(ACTIVEMQ_CPP)
    make -C $(ACTIVEMQ_CPP) install
    rm -rf $(ACTIVEMQ_CPP)

//

ActiveMQ-cppActiveMQ-cpp

Posted at 2010. 3. 14. 15:36 | Posted in OpenSource
http://activemq.apache.org/cms/
ActiveMQ C++ 클라이언트 라이브러리.
JMS와 유사한 형태로 Producer와 Consumer를 작성할 수 있다.

설치
1. apr (Apach Portable Runtime) 설치
   먼저 apr 이 설치되어 있어야 한다.
   http://apr.apache.org/
   로 가서 다운 받아 설치(상세는 apr 페이지 참조).

2. ActiveMQ-cpp를 다운 받아 설치한다.
   http://activemq.apache.org/cms/activemq-cpp-310-release.html
   설치 방법은 다운 받은 소스에 포함된 README.txt 참조.

샘플 실행해 보기
ActiveMQ-cpp 라이브러리들이 필요하므로 설치 시에 prefix를 적절히 주어 원하는 환경에 설치되도록 해두면 좋다.
(prefix 기본값은 /usr/local 이므로 여기에 설치해도 무방)
activemq-cpp-src> ./configure --prefix=/my/lib/activemq
activemq-cpp-src> make
activemq-cpp-src> make install

ActiveMQ-cpp에 포함된 기본 예제 src/examples/producers/SimpleProducer.cpp 를 빌드해 보자.
소스를 내 작업 디렉토리에 복사하고 다음과 같이 Makefile를 작성한다.
AMQ_HOME = /my/lib/activemq

AMQ_INC_DIR = $(AMQ_HOME)/include
AMQ_LIB_DIR = $(AMQ_HOME)/lib
#AMQ_INCS = `$(AMQ_HOME)/bin/activemqcpp-config --includes`
AMQ_INCS = -I${AMQ_INC_DIR}/activemq-cpp-3.1.0
#AMQ_LIBS = `$(AMQ_HOME)/bin/activemqcpp-config --libs`
AMQ_LIBS = -L${AMQ_LIB_DIR} -lactivemq-cpp
AMQ_LIBS += -lpthread -ldl -luuid

APR_CPPFLAGS =  -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE

CFLAGS = -g -Wall $(APR_CPPFLAGS)
INCLUDES = $(AMQ_INCS)
LIBS = $(AMQ_LIBS)

TARGET=producer

all:
    g++ $(CFLAGS) -o $(TARGET) SimpleProducer.cpp $(INCLUDES) $(LIBS)
clean:
    rm -f $(TARGET)
※ SimpleProducer.cpp에서 APR_CPPFLAGS는 필요없으나 멀티쓰레드를 사용하거나 확장된 기능을 사용할 것을 고려해 남겨두었다.

make를 하면 실행파일(producer)이 생성된다.
하지만, 실행하면 다음과 같은 에러가 발생한다.
$ ./producer
./producer: error while loading shared libraries: libactivemq-cpp.so.11: cannot open shared object file: No such file or directory
ActiveMQ-cpp 설치 시 prefix를 지정하지 않았다면 /usr/local/lib에 설치되므로 문제없이 실행되었을 것이다.
하지만 위와 같이 다른 path에 ActiveMQ-cpp를 설치했다면 LD_LIBRARY_PATH에 추가해주면 된다.
bash)
    export LD_LIBRARY_PATH=/my/lib/activemq:$LD_LIBRARY_PATH
csh)
    setenv LD_LIBRARY_PATH /my/lib/activemq:$LD_LIBRARY_PATH


실행결과

consumer: Windows-XP (192.168.1.200 java sample)
    - D:\apache-activemq-5.3.0\example>ant consumer -Durl=tcp://192.168.1.100:61616 -Dsubject=TEST.FOO
produser: Linux (192.168.1.100 c++ sample: 위 SimpleProducer.cpp) 예제가 localhost activemq에 메시지를 보냄.
activemq server: Linux(192.168.1.100)

Windows에서 실행시킨 consumer(java 버전)가 잘 동작하고 데이터도 잘 꺼내왔다!

환경설정
http://activemq.apache.org/cms/configuring.html

잘 응용해보자.
//