JeroMQ
libzmq (http://zeromq.org) 的纯Java实现。
特性
-
基于libzmq 4.1.7。
-
支持ZMTP/3.0 (http://rfc.zeromq.org/spec:23)。
-
tcp://协议和inproc://协议与zeromq兼容。
-
ipc://协议仅在jeromq之间工作(内部使用tcp://127.0.0.1:port)。
-
安全机制
-
性能相比原生libzmq并不差。
- 每秒4.5M条消息(100B)。
- 性能详情。
-
与zeromq和jzmq提供完全相同的开发体验。
-
TCP KeepAlive计数、空闲时间和间隔时间仅在JVM 13及以后版本中可用。
不支持的功能
-
与zeromq的ipc://协议。Java不支持UNIX域套接字。
-
pgm://协议。找不到pgm的Java实现。
-
norm://协议。找不到Java实现。
-
tipc://协议。找不到Java实现。
-
GSSAPI机制尚未实现。
-
仍不支持中断线程:库不是线程中断安全的。
贡献
欢迎贡献!有关贡献过程和有用的开发任务的详细信息,请参阅CONTRIBUTING.md。
使用方法
Maven
将以下内容添加到Maven项目的pom.xml
中:
<dependency>
<groupId>org.zeromq</groupId>
<artifactId>jeromq</artifactId>
<version>0.6.0</version>
</dependency>
<!-- 对于最新的SNAPSHOT版本 -->
<dependency>
<groupId>org.zeromq</groupId>
<artifactId>jeromq</artifactId>
<version>0.6.0</version>
</dependency>
<!-- 如果找不到最新的快照版本 -->
<repositories>
<repository>
<id>sonatype-nexus-snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
Ant
要从pom.xml
生成ant构建文件,请执行以下命令:
mvn ant:ant
入门
简单示例
以下是如何实现一个打印接收到的消息并回复"Hello, world!"的服务器:
import org.zeromq.SocketType;
import org.zeromq.ZMQ;
import org.zeromq.ZContext;
public class hwserver
{
public static void main(String[] args) throws Exception
{
try (ZContext context = new ZContext()) {
// 用于与客户端通信的套接字
ZMQ.Socket socket = context.createSocket(SocketType.REP);
socket.bind("tcp://*:5555");
while (!Thread.currentThread().isInterrupted()) {
// 阻塞等待接收消息
byte[] reply = socket.recv(0);
// 打印消息
System.out.println(
"Received: [" + new String(reply, ZMQ.CHARSET) + "]"
);
// 发送响应
String response = "Hello, world!";
socket.send(response.getBytes(ZMQ.CHARSET), 0);
}
}
}
}
更多示例
JeroMQ的zguide示例翻译是推荐用法的良好参考。
文档
有关API级文档,请参阅Javadocs。
本仓库还有一个doc文件夹,其中包含各种"如何做X"指南以及与使用JeroMQ相关的其他有用主题信息。
许可证
所有源文件的版权归属于2007-2024年的贡献者,详见AUTHORS文件。
本软件的免费使用遵循Mozilla公共许可证2.0的条款。详情请参阅JeroMQ发行版中包含的LICENSE
文件。