我正在为在Ubuntu上运行的基于Web的系统寻找消息/排队解决方案。
该系统基于以下技术构建:
- Javascript(Extjs框架) - 前端
- PHP
- Python(与加密设备交互的守护程序服务)
- Python pyserial - (串口交互)
- MySQL
- Linux - Ccustom bash脚本(更新数据库/邮件报告)
该系统具有以下用途:
- 在分布式平台上捕获客户端信息
- 使用硬件设备加密/解密敏感交易
系统崩溃:
- 用户可以使用网络浏览器访问系统
- 用户捕获客户信息并按下“提交”按钮 数据被发送到加密设备,系统进入等待状态
- 然后在设备上加密数据并将其发送回浏览器
- 加密数据保存到数据库
- 系统退出等待状态并显示DONE消息
醇>
请注意:我已经处理了等待/进度消息,所以请省略。
到目前为止我做了什么:
- 我创建了一个python守护程序,它监视数据库视图是否有任何新请求
- 守护程序服务使用pyserial和updates在设备上执行新请求 请求表带有“响应”即。加密内容
- 我在PHP中创建了一个轮询服务,经常检查>特定请求的请求表中是否有“响应”
- 使用适当的等待/完成状态消息创建Extjs前端
当前设置存在的问题:
- Concurreny - 我们期待> 20个用户随时提交加密/解密请求 使用数据库作为消息/排队解决方案由于表锁定而无法扩展,并且只有1个侦听请求的侦听进程
- 守护程序服务 - 依赖守护进程服务有点风险,数据库开销似乎有点高,每秒都会查看新请求
- 开发 - 只需向加密/解密服务发送请求,而不是在db中插入请求,轮询响应并在守护程序服务中处理请求,这将简化我的开发任务。
我的问题:
在这种情况下,理想的消息/女王解决方案是什么?请进入>帐户我的系统专门在Ubuntu O / S上运行。
我已经完成了一些Google服务并且遇到了一个叫做“Stomp”服务器的东西,但是它设置起来有些困难并缺少一些文档。此外,我更喜欢那些在设置此类内容方面具有一定经验的人的建议,而不是一些“如何”指导:)
感谢您的时间
答案 0 :(得分:5)
我相信RabbitMQ的热门AMQP实现提供了PHP扩展(here),您绝对可以在Python中访问AMQP,例如通过Qpid。 RabbitMQ也很容易在Ubuntu(或Debian)上安装,参见例如here
无论是通过RabbitMQ还是其他方式,采用开放式消息传递和排队协议(如AMQP)与更“封闭”的解决方案相比具有明显和明确的优势(即使技术上是开源的,这样的解决方案也不会提供尽可能多的实现,因此灵活性,作为一种广泛采用的开放标准协议)。
答案 1 :(得分:0)
我愿意:
加密守护程序/服务将:
我在项目中使用此逻辑,您可以在http://bazaar.launchpad.net/~mirror-selector-devs/mirror-selector/devel/files/head:/mirrorselector/检查源,在我的情况下输入是URL,处理是扫描可用镜像,输出是镜像URL。
答案 2 :(得分:0)
可能为时已晚,但请尝试http://www.snakemq.net/