ActiveMQ-cppActiveMQ-cpp
Posted at 2010. 3. 14. 15:36 | Posted in OpenSourcehttp://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를 작성한다.
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
잘 응용해보자.
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는 필요없으나 멀티쓰레드를 사용하거나 확장된 기능을 사용할 것을 고려해 남겨두었다.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)
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
잘 응용해보자.