我用C / C ++编写了几个定制用途的Unix程序来解析入站数据文件并将记录插入数据库。我想让客户能够从一台或多台Windows PC监控这些程序的状态。在这个时代,两者之间进行沟通的最佳方式是什么?
在当天,我曾经通过在两台机器上编写多组专用客户端/服务器TCP / IP套接字级程序来做这种事情,使用自行开发的协议来请求程序状态并生成响应。 Windows方面每隔一分钟就会对Unix端进行ping操作,并且Unix端会回复各种等待处理的记录,当天处理的记录,MTD和YTD(大多数是给定目录中的简单文件计数,还有数据库查找) 。 Windows方面也可以告诉Unix方面重新启动,或者将有问题的记录移动到“保留”区域......那样的事情。双方都包括一个专门的“父母”程序,以确保所有子进程继续运行,或者如果他们死亡将重新启动它们。
但那是在80年代和90年代初期。是否有更新,更好,更可靠的技术在这个时代基本上做同样的事情?我的专长是C / C ++ / C#,但我可以通过一个很好的教程实现一些基于Web的东西。此外,我还想坚持使用自定义代码或免费/开源解决方案。
我的手写TCP / IP客户端/服务器方法对于这种情况仍然是最好的吗?
谢谢你的时间!
答案 0 :(得分:0)
RabbitMQ(implementation of AMQP)对您的问题来说是一个很好且相当容易实施的解决方案。
您可以在platform of your choice和there are many client libraries, including Java and .NET上安装服务器,只需几行代码即可发布消息。
What can RabbitMQ do for you? [概述摘录]
Messaging使软件应用程序能够连接和扩展。 应用程序可以相互连接,作为更大的组件 应用程序,或用户设备和数据。消息是异步的, 通过分离发送和接收数据来解耦应用程序。
您可能正在考虑数据传输,非阻塞操作或推送 通知。或者您想使用发布/订阅,异步 处理或工作队列。所有这些都是模式,它们构成了一部分 消息传递。
RabbitMQ是一个消息传递代理 - 消息传递的中介。它 为您的应用程序提供一个通用的发送和接收平台 消息和您的消息是一个安全的住所,直到收到。