一、最新版支持的协议
activemq 5.15.x支持的协议:
AMQP:仅支持Java
AUTO:是一个选项,自动匹配OpenWire, STOMP, AMQP, MQTT
MQTT: MQTT is a machine-to-machine (M2M) publish/subscribe messaging transport.
OpenWire:activemq默认协议,有C#客户端和C++客户端(旧版本有C客户端)
REST:ActiveMQ implements a RESTful API to messaging which allows any web capable device to publish or consume messages using a regular HTTP POST or GET.
RSS and Atom:网络订阅方式
Stomp:ActiveMQ supports the Stomp protocol and the Stomp - JMS mapping. This makes it easy to write a client in pure Ruby, Perl, Python or PHP for working with ActiveMQ. 没有C客户端
WSIF:Apache Web Service Invocation Framework (WSIF)
WS Notification:WS通知
XMPP:使用Jabber Client客户端通讯
二、新旧版本对比
5.15.x配置文件中支持的协议:
<transportConnectors>
<!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
</transportConnectors>
5.7.0配置文件中支持的协议:
<transportConnectors>
<!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireformat.maxFrameSize=104857600"/>
<transportConnector name="websocket" uri="ws://0.0.0.0:61614"/>
</transportConnectors>
三、c语言客户端
OpenWire-c客户端:
http://svn.apache.org/repos/asf/activemq/sandbox/openwire-c/
观察了下,官方c语言客户端只有send的功能,没有监听的功能
四、其他
下载一个目录下的所有文件
cd /home/posp3
wget -c -r -np -k -L -p svn.apache.org/repos/asf/activemq/sandbox/openwire-c/
移动目录
mv ./* ../../../../../../
删除没有用的目录和文件
find ./ -type f -name "index.html" -exec rm -r {} \;
rm -rf repos
Linux查看某个库的位置/是否安装
ldconfig -p | grep libapr
libaprutil-1.so.0 (libc6,x86-64) => /usr/lib64/libaprutil-1.so.0
libapr-1.so.0 (libc6,x86-64) => /usr/lib64/libapr-1.so.0
Linux查看so文件中的函数
objdump -tT /usr/lib64/libaprutil-1.so.0.3.9
查看函数名称和地址
nm -D /usr/lib64/libaprutil-1.so.0.3.9
Lunux查看a文件中的函数
查看文件:ar -t *.a
查看函数、变量:nm *.a
===============================================================
安装apr过程
./configure --prefix=/usr/apr // 指定安装到/usr/apr目录
make
make test
make install
编译出libaprutil.so
gcc -I/usr/apr/include/apr-1 amqcs.c ow.c ow_buffer.c ow_commands_v1.c ow_marshal.c -fPIC -shared -o libaprutil.so -L/usr/apr/lib -lapr-1
cp ./libaprutil.so /usr/lib
ldconfig
编译成可执行程序
gcc -I/usr/apr/include/apr-1 -I/home/posp3/activemq-c-client/openwire activemq.c -D_GNU_SOURCE -L/usr/apr/lib -lapr-1 -L/home/posp3/activemq-c-client -laprutil
编译成可执行程序--指定名称
gcc -I/usr/apr/include/apr-1 -I/home/posp3/activemq-c-client/openwire activemq.c -D_GNU_SOURCE -L/usr/apr/lib -lapr-1 -L/home/posp3/activemq-c-client -laprutil -o runthis
编译成静态库
gcc -I/usr/apr/include/apr-1 -I/home/posp3/activemq-c-client/openwire -c activemq.c -D_GNU_SOURCE -L/usr/apr/lib -lapr-1 -L/home/posp3/activemq-c-client -laprutil
ar rs activemq.a activemq.o
将libaprutil.so放入/usr/lib下
ldconfig #刷新动态链接库缓存
ldd runthis
linux-vdso.so.1 => (0x00007fff9e1ff000)
libapr-1.so.0 => /usr/lib64/libapr-1.so.0 (0x00007fc67050f000)
libaprutil.so => /usr/lib/libaprutil.so (0x00007fc6702f4000)
libc.so.6 => /lib64/libc.so.6 (0x0000003764400000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x000000376f400000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x0000003772800000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003764800000)
/lib64/ld-linux-x86-64.so.2 (0x0000003764000000)
libfreebl3.so => /lib64/libfreebl3.so (0x0000003772c00000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003764c00000)
./runthis
Connecting......Could not connect: No space left on device (28)