ZeroMQ - 安装设置

学习 ZeroMQ 的第一步是在您的系统上安装核心 ZeroMQ 库,并且根据您使用的编程语言,您需要安装相应的语言绑定以在您的代码中与 ZeroMQ 交互。

例如,如果您使用的是 Python 语言,则需要安装 pyzmq,它为 ZeroMQ 提供 Python 绑定。

ZeroMQ 库的安装不依赖于操作系统。相反,它取决于编程语言及其各自的绑定依赖项。因此,安装步骤在不同的操作系统上通常是相似的。

如何在 Java 中设置 ZeroMQ?

以下说明将解释如何在 Java 中安装和设置 ZeroMQ 库。要在 Java 中安装和使用 ZeroMQ (ØMQ),您需要使用 ZeroMQ 的 Java 绑定。最常用的绑定是 JeroMQ,它是 ZeroMQ 的纯 Java 实现。

以下是在 Java 中安装 ZeroMQ 的分步指南 −

步骤 1:在 Java 中创建 Maven 项目

要使用 Java 创建 Maven 项目,请打开您喜欢的 IDE(我们使用 Eclipse),单击左上角的 文件 菜单,然后在显示的列表中选择 Maven 项目,如下图所示 −

ZeroMQ 安装

这将为您提供一个"新建 Maven 项目"窗口。在其中,单击下一步按钮。

ZeroMQ 安装

在下一个窗口中,在过滤器文本框中输入"Apache",选择quickstart并单击下一步

ZeroMQ 安装

然后,在GroupId文本框中输入"com.zeromq",在ArtifactId文本框中输入"zeromq",然后单击完成(您可以为"GroupId"和"ArtifactId"选择任意值)。

ZeroMQ安装

单击完成后,在终端中输入"y"并按 Enter。

步骤 2:添加 ZeroMQ 依赖项

在 Java 项目中安装 ZeroMQ 的最简单方法是使用 JeroMQ,它可以作为依赖项包含在您的项目中。

如果您使用 Maven 或 Gradle(两者都是 Java 开发工具)来管理项目,请将依赖项添加到您的 pom.xml 或 build.gradle 文件中。

<dependency>
<groupId>org.zeromq</groupId>
<artifactId>jeromq</artifactId>
<version>0.5.3</version>
</dependency>

//for the latest SNAPSHOT -->
<dependency>
<groupId>org.zeromq</groupId>
<artifactId>jeromq</artifactId>
<version>0.6.0-SNAPSHOT</version>
</dependency>

//If you can't find the latest snapshot
<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>

步骤 3:用 Java 编写您的第一个 ZeroMQ 程序

一旦 JeroMQ 包含在您的项目中,您就可以开始使用它。以下是 Java 中基本的 ZeroMQ 发布者和订阅者的示例 −

发布者

以下是"发布者"的基本示例 −

import org.zeromq.ZMQ;
import org.zeromq.ZMQ.Context;
import org.zeromq.ZMQ.Socket;

public class Publisher {
   public static void main(String[] args) {
      Context context = ZMQ.context(1);
      Socket socket = context.socket(ZMQ.PUB);
      socket.bind("tcp://*:5555");

      while (true) {
         socket.send("Hello, subscribers!".getBytes(), 0);
      }
   }
}

输出

//它只会将消息发送给接收者

订阅者

以下是"订阅者"示例 −

import org.zeromq.ZMQ;
import org.zeromq.ZMQ.Context;
import org.zeromq.ZMQ.Socket;
public class Subscriber {
   public static void main(String[] args) {
      Context context = ZMQ.context(1);
      Socket socket = context.socket(ZMQ.SUB);
      socket.connect("tcp://localhost:5555");
      socket.subscribe("".getBytes()); // 订阅所有消息

      while (true) {
         byte[] message = socket.recv(0);
         System.out.println("Received message: " + new String(message));
      }
   }
}

输出

上述程序显示由"发布者"发送的所有接收消息 −

Received message: Hello, subscribers!
Received message: Hello, subscribers!
Received message: Hello, subscribers!
Received message: Hello, subscribers!
Received message: Hello, subscribers!
Received message: Hello, subscribers!

如何在 Python 中设置 ZeroMQ?

要在 Python 中下载并安装 ZeroMQ,我们需要下载与 ZeroMQ 绑定的 Python 库,即 PyZMQ 库,这是一个快速且轻量级的消息传递库。

PyZMQ 适用于任何合理的 Python 版本(应大于或等于 3.7)以及 PyPy。PyZMQ 用于没有消息代理的消息队列。

步骤 1:安装 PyZMQ

要安装 PyZMQ,我们可以使用 pip,这是安装 Python 包的最常用方法。步骤如下:

打开终端和命令提示符

  • 在窗口上,按 window + R,输入 cmd,然后按 Enter。
  • 在 Mac 或 Linux 上,打开终端。

运行 pip install 命令

要安装 PyZMQ,请在终端或命令提示符中运行以下命令:

pip install pyzmq

上述命令将下载并安装 PyZMQ 和 ZeroMQ 库。

Downloading pyzmq-26.2.0-cp312-cp312-win_amd64.whl.metadata (6.2 kB)
Downloading pyzmq-26.2.0-cp312-cp312-win_amd64.whl (637 kB)
   --------------------- 637.8/637.8 kB 5.8 MB/s eta 0:00:00
Installing collected packages: pyzmq
Successfully installed pyzmq-26.2.0

[notice] A new release of pip is available: 24.0 -> 24.2
[notice] To update, run: python.exe -m pip install --upgrade pip

步骤 2:验证

要确认 PyZMQ 是否已正确安装,请打开 Python shell 并运行以下命令。如果它打印出安装的 ZeroMQ 和 PyZMQ 版本并且没有任何错误,则安装成功。

>>> import zmq
>>> print(zmq.zmq_version())
4.3.5
>>> print(zmq.pyzmq_version())
26.2.0
>>>

步骤 3:用 Python 编写您的第一个 ZeroMQ 程序

由于我们已经安装了 Python 消息库"PyZMQ",我们可以使用 ZeroMQ 编写 Python 程序。

发布者

以下是"发布者"的基本示例 −

import zmq
import time

# 创建 ZeroMQ 上下文
context = zmq.Context()

# 创建 PUB 套接字
socket = context.socket(zmq.PUB)
socket.bind("tcp://*:5555")

while True:
   # 每秒发送一条消息
   message = "Hello, ZeroMQ!"
   socket.send_string(message)
   print(f"Sent: {message}")
   time.sleep(1)

输出

Sent: Hello, ZeroMQ!
Sent: Hello, ZeroMQ!
Sent: Hello, ZeroMQ!
Sent: Hello, ZeroMQ!
Sent: Hello, ZeroMQ!

订阅者

以下是"订阅者"示例 −

import zmq

# 创建 ZeroMQ 上下文
context = zmq.Context()

# 创建 SUB 套接字
socket = context.socket(zmq.SUB)
socket.connect("tcp://localhost:5555")

# 订阅所有消息(空字符串作为订阅)
socket.setsockopt_string(zmq.SUBSCRIBE, "")

while True:
   message = socket.recv_string()
   print(f"Received: {message}")

输出

Received: Hello, ZeroMQ!
Received: Hello, ZeroMQ!
Received: Hello, ZeroMQ!
Received: Hello, ZeroMQ!
Received: Hello, ZeroMQ!