Dav*_*rks 6 java linux shell message-queue
我需要将shell脚本(从基于linux的app调用)的信息传递给java应用程序.
命名管道很痛苦,因为我不能在不考虑对管道读/写端的复杂影响的情况下启动/停止任何一项服务.
套接字很难,因为如果重新启动监听过程,就没有排队机制,简单的实现需要不断创建新的套接字(否则shell脚本会因check-and-restart-socket和排队代码而变得非常复杂).
我最近正在阅读这些System V/POSIX linux消息队列.我正在运行Fedora 12,并想知道是否有一种很好的方法来配置这些消息队列并从Java进行交互.
您不能直接使用它们,您必须执行一些 JNI 魔法才能将它们连接在一起。
您在使用管道时遇到什么问题?Java 将它们视为普通文件。我没有广泛使用它们,但我对 Pipes 没有任何真正的问题。唯一的细节是,如果生产者跟不上,管道读取器需要不断地重新打开管道。
但如果任何一方失败,另一方就会阻塞等待另一方恢复。
您只需要小心从管道读取缓冲区即可。如果您从管道读入缓冲区,然后失败,则该数据将丢失。