官方网站:https://pulsar.apache.org/
对于本地开发和测试,您可以在机器上以单机模式运行Pulsar。单机模式在单个Java虚拟机(JVM)进程中运行所有组件。本地单机版安装手册:
消息队列PULSAR在Linux环境的主程序安装使用
- 1.Prerequisites
- 1.1 Pulsar Runtime Java Version Recommendation
- 1.2 本次安装环境
- 2.安装
- 2.1 下载安装包
- 2.2 解压并验证文件
- 2.3 启动单机版
- 2.4 创建Topic
- 2.5 发送消息
- 2.6 读取消息
- 2.7 发送更多的消息
- 3.总结
1.Prerequisites
- Pulsar当前可在64位的macOS和Linux上运行,如果想在Windows上运行可参阅 Run Pulsar In Docker;
- 此外,还需要安装合适的64位JRE/JDK版本。请参考 Pulsar Runtime Java Version Recommendation。
1.1 Pulsar Runtime Java Version Recommendation
- pulsar ver > 2.10 and master branch
Components | Java Version |
---|---|
Broker | 17 |
Functions / IO | 17 |
CLI | 17 |
Java Client | 8 or 11 or 17 |
- 2.8 <= pulsar ver <= 2.10
Components | Java Version |
---|---|
Broker | 11 |
Functions / IO | 11 |
CLI | 8 or 11 |
Java Client | 8 or 11 |
- pulsar ver < 2.8
Components | Java Version |
---|---|
All | 8 or 11 |
如果服务器使用的是JDK8,可以使用Docker进行部署。
1.2 本次安装环境
# 1.系统
CentOS Linux release 7.9.2009 (Core)
# 2.JDK
java version "17.0.7" 2023-04-18 LTS
Java(TM) SE Runtime Environment (build 17.0.7+8-LTS-224)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.7+8-LTS-224, mixed mode, sharing)
2.安装
2.1 下载安装包
# 官网代码
wget https://archive.apache.org/dist/pulsar/pulsar-x.x.x/apache-pulsar-x.x.x-bin.tar.gz
也可以在官网进行下载,本次下载的文件为长期支持版本apache-pulsar-3.0.4-bin.tar.gz
:
2.2 解压并验证文件
# 实例
tar -zxvf apache-pulsar-3.0.4-bin.tar.gz
对于这个快速入门的其余部分,所有命令都是从分发文件夹的根目录运行的,所以切换到它:
# 实例
cd apache-pulsar-3.0.4
# 列出根目录下目录
ls -1F
以下描述来自官网:
Directory | Description |
---|---|
bin | The pulsar entry point script, and many other command-line tools |
conf | Configuration files, including broker.conf |
lib | JARs used by Pulsar |
examples | Pulsar Functions examples |
instances | Artifacts for Pulsar Functions |
2.3 启动单机版
Pulsar的内存默认需要2G
对于较小内存的服务器可以修改conf/pulsar_env.sh
文件,否则启动时报killed
。
# Extra options to be passed to the jvm
PULSAR_MEM=${PULSAR_MEM:-"-Xms2g -Xmx2g -XX:MaxDirectMemorySize=4g"}
可进行环境变量配置,配置后可以不在根目录下执行命令:
# 进行环境变量配置
# 1.添加配置文件
vim /etc/profile.d/pulsar.sh
# pulsar.sh文件内容:
export PULSAR_HOME=/path/to/pulsar /opt/pulsar/apache-pulsar-3.0.4
export PATH=$PATH:$PULSAR_HOME/bin
# 2.配置文件生效
# chmod +x /etc/profile.d/pulsar.sh
source /etc/profile.d/pulsar.sh
# 3.启动
pulsar standalone
启动后以下目录会被创建,官网描述如下:
Directory | Description |
---|---|
data | All data created by BookKeeper and RocksDB |
logs | All server-side logs |
如果想要以守护线程启动可以执行以下命令,更多信息可参阅 pulsar-daemon。
bin/pulsar-daemon start standalone
在启动Pulsar时会创建命名空间public/default
它用于开发目的。所有的Topic都在命名空间中进行管理,更多信息可参阅 Namespaces 和 Topics。
2.4 创建Topic
Pulsar在主题中存储消息。在使用主题之前显式地创建主题是一个很好的实践,即使Pulsar可以在引用主题时自动创建主题。创建一个新的主题,使用命令:
# 实例
pulsar-admin topics create persistent://public/default/test-topic
在 Pulsar 中,主题名称由以下几个部分组成:
- persistent: 表示这是一个持久化主题。这意味着发布的消息会被持久化存储在磁盘上,即使在 broker 故障或重启后,消息仍然可以被恢复和消费。与之相对的是非持久化主题(non-persistent),其消息仅存储在内存中,不保证消息的持久化。
- public/default: 这部分指定了主题所在的命名空间(namespace)。在 Pulsar 中,命名空间是对相关主题进行逻辑分组的层级结构,提供了一种管理多个主题的方式,如设置配额、权限、策略等。public 是租户(tenant)名,通常代表一个共享的、无特定访问控制的环境;default 是在该租户下的一个默认命名空间。租户和命名空间共同构成了主题的命名上下文。
- my-topic: 最后一部分是主题的实际名称,即在给定命名空间内唯一标识该主题的字符串。用户可以根据实际业务需求来命名主题。
2.5 发送消息
可以使用Pulsar命令行工具向主题写入消息。这对于实验很有用,但在实践中,在应用程序代码中使用Producer API,或者使用Pulsar IO连接器将数据从其他系统拉入Pulsar。运行命令生成一条消息:
# 实例
pulsar-client produce test-topic --messages 'Hello Pulsar!'
# 日志
2024-04-08T11:17:55,328+0800 [main] INFO org.apache.pulsar.client.cli.PulsarClientTool - 1 messages successfully produced
2.6 读取消息
使用下命的命令从主题中读取消息:
# 实例
pulsar-client consume test-topic -s 'test-subscription' -p Earliest -n 0
具体的参数信息这里不再介绍,收到的消息体如下:
# 再发送1条消息【可看到如下信息】
----- got message -----
key:[null], properties:[], content:Hello Pulsar!
2.7 发送更多的消息
# 实例
pulsar-client produce test-topic --messages "$(seq -s, -f 'Message NO.%g' 1 10)"
# 收到信息
----- got message -----
key:[null], properties:[], content:Message NO.1
----- got message -----
key:[null], properties:[], content:Message NO.2
----- got message -----
key:[null], properties:[], content:Message NO.3
----- got message -----
key:[null], properties:[], content:Message NO.4
----- got message -----
key:[null], properties:[], content:Message NO.5
----- got message -----
key:[null], properties:[], content:Message NO.6
----- got message -----
key:[null], properties:[], content:Message NO.7
----- got message -----
key:[null], properties:[], content:Message NO.8
----- got message -----
key:[null], properties:[], content:Message NO.9
----- got message -----
key:[null], properties:[], content:Message NO.10
3.总结
安装过程还是很简单的,使用起来跟Kafka也很类似。