说实在话,httpsqs队列服务器客户端十分的多,应为httpsqs就是用的http协议,所以什么php, c,python,perl,java等等一大堆一大堆,而我最后使用的确实shell,我就是用shell去和队列服务器交互的。没办法,在这个客户端交互的过程中我遇到了太多的问题。
1.php
php环境啥的就不说了,而当我运行的时候却发现官方推荐的httpsqs_client.php有未定义变量,我这个人对php不通,也不打算喊通php的哥们来做,就在尝试了php后放弃了。
2.java
工程就是java的,所以我十分的想复用java客户端,当我使用java代码将内容存放到httpsqs中去后,我想继续用java取出来。放进去和取出来都没有问题。问题就在我放到里面去的内容了。 我放到队列服务器中的内容都是执行文档转换的linux命令,比如ffmpeg,soffice之类的转换命令,问题就出在在用java的Runtime类的exec方法执行从队列里面拿出的命令的时候,死活都执行不了,看着离成功就一步,所以做了很多尝试,最终还是听从某个大牛的建议还是不要使用exec这种不保障的方法执行命令。
3.shell
在经历了一番折腾后,我决定使用最简单的方法,直接写个shell得嘞,使用管道,将从队列服务器中拿出的命令推送给/bin/sh执行,例如:
while true
do
curl -s "http:host:port:1218/?name=name&opt=get&auth=test" | iconv -fgb2312 -t utf-8 | /bin/sh
sleep 3
done
上面是每个3秒钟就读下队列,从中拿出数据,使用iconv转码为汉字,然后管道交互给/bin/sh执行。
注意请使用root用户执行,不然存在权限问题。