java - Java 可以与 System V linux 消息队列交互吗?

标签 java linux shell message-queue

我需要将信息从 shell 脚本(从基于 linux 的应用程序调用)传递到 java 应用程序。

命名管道很麻烦,因为我无法在不考虑对管道读/写端的复杂影响的情况下启动/停止任何一项服务。

套接字很难,因为如果重新启动监听过程,则没有排队机制,简单的实现需要不断创建新的套接字(否则 shell 脚本会因检查并重新启动而变得非常复杂-套接字和排队代码)。

我最近在阅读这些System V/POSIX linux 消息队列。我正在运行 Fedora 12,想知道是否有配置这些消息队列并从 Java 与它们交互的好方法。

最佳答案

您不能直接使用它们,您必须使用一些 JNI 魔法将它们连接在一起。

您在使用 Pipes 时遇到了什么问题? Java 将这些视为通用文件。我没有广泛使用它们,但我对 Pipes 没有任何实际问题。唯一的细节是,如果生产者跟不上,管道读取器需要不断地重新打开管道。

但如果任何一方失败,另一方只会阻塞等待另一方恢复。

你只需要小心从管道中读取缓冲区。如果您从管道读入缓冲区,然后失败,则该数据将丢失。

关于java - Java 可以与 System V linux 消息队列交互吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6407034/

相关文章:

java - 如何在 Jetty 上的 Spring 应用程序中将 jsessionid cookie 路径更改为服务器根目录?

java - 如何确定变量是否有作用域和生存期?

linux - Bash 脚本删除 C 代码文件中不存在代码的注释行?

linux - 更改 xorg 审计级别

bash - 连续处理tail -f输出

java - 使用 Lucene 提取英语单词

javascript - JavaFX : Does WebView support geolocation?

asp.net - 是否可以在 Linux 上为 asp 和 asp.net 设置 Web 服务器?

linux - 从最后一行开始读取文件

linux - shell 编程: How to use find in fish?