#作者:闫乾苓
文章目录
- 1、二进制安装部署Pulsar(standalone)
- 1.1 安装配置JDK
- 1.2 下载解压pulsar安装包
- 1.3 启动独立模式的Pulsar 集群
- 1.4 创建主题测试
- 1.5 向主题写入消息测试
- 1.6 从主题中读取消息测试
- 2.docker安装部署Pulsar(standalone)
- 2.1 使用docker 启动Pulsar
- 2.2 使用客户端API测试集群
1、二进制安装部署Pulsar(standalone)
1.1 安装配置JDK
根据官方文档要求,需要安装合适的 64 位 JRE/JDK 版本。请参考Pulsar Runtime Java 版本建议
组件 | Java 版本 |
---|---|
Broker | 17 |
Functions / IO | 17 |
CLI | 17 |
Java Client | 8 or 11 or 17 |
Openjdk17下载地址:
https://adoptium.net/zh-CN/temurin/releases/?variant=openjdk17
# 解压下载的安装包
[root@pulsar ~]# tar xf OpenJDK17U-jdk_x64_linux_hotspot_17.0.14_7.tar.gz -C /opt# 配置软连接
[root@pulsar ~]# ln -s /opt/jdk-17.0.14+7/ /opt/openjdk-17# 配置PATH环境
[root@pulsar ~]# cat >> /etc/profile << EOF
export JAVA_HOME=/opt/openjdk-17
export PATH=\$JAVA_HOME/bin:\$PATH
EOF# 使PATH环境生效
[root@pulsar ~]# source /etc/profile# 验证,能输出正确版本为配置成功
[root@pulsar ~]# java -version
openjdk version "17.0.14" 2025-01-21
OpenJDK Runtime Environment Temurin-17.0.14+7 (build 17.0.14+7)
OpenJDK 64-Bit Server VM Temurin-17.0.14+7 (build 17.0.14+7, mixed mode, sharing)
1.2 下载解压pulsar安装包
# 下载安装包
[root@pulsar ~]# wget https://archive.apache.org/dist/pulsar/pulsar-2.11.4/apache-pulsar-2.11.4-bin.tar.gz
# 解压到/opt
[root@pulsar ~]# tar xf apache-pulsar-2.11.4-bin.tar.gz -C /opt/# 设置软连接
[root@pulsar opt]# ln -s /opt/apache-pulsar-2.11.4/ /opt/pulsar
1.3 启动独立模式的Pulsar 集群
[root@pulsar ~]# cd /opt/pulsar/
[root@pulsar ~]# bin/pulsar standalone
Pulsar 集群启动时,会创建以下目录:
目录 | 描述 |
---|---|
data | BookKeeper 和 RocksDB 创建的所有数据 |
Log | 所有服务器端日志 |
- 要将服务作为后台进程运行,可以使用该bin/pulsar-daemon start standalone命令。
- 命名空间public/default是在启动 Pulsar 集群时创建的。此命名空间用于开发目的。所有 Pulsar 主题均在命名空间内进行管理。
1.4 创建主题测试
Pulsar 将消息存储在主题中。即使 Pulsar 可以在引用主题时自动创建主题,在使用主题之前明确创建主题也是一种很好的做法。
要创建新主题,请运行以下命令:
[root@pulsar pulsar]# bin/pulsar-admin topics create persistent://public/default/my-topic
1.5 向主题写入消息测试
[root@pulsar pulsar]# bin/pulsar-client produce my-topic --messages 'Hello Pulsar!'
…
2025-04-14T11:30:37,582+0800 [main] INFO org.apache.pulsar.client.cli.PulsarClientTool - 1 messages successfully produced
1.6 从主题中读取消息测试
[root@pulsar pulsar]# bin/pulsar-client consume my-topic -s 'my-subscription' -p Earliest -n 0
Earliest 表示从最早的未消费消息开始消费。-n配置消费的消息数量,0 表示永远消费。
一个shell终端写入,另外一个终端读取:
----- got message -----
key:[null], properties:[], content:Hello Pulsar!-0
----- got message -----
key:[null], properties:[], content:Hello Pulsar!-1
----- got message -----
key:[null], properties:[], content:Hello Pulsar!-2
1.7 批量写入消息
[root@pulsar pulsar]# bin/pulsar-client produce my-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.10
1.8 停止Pulsar
使用bin/pulsar standalone启动时,使用Ctrl-C停止。
使用bin/pulsar-daemon start standalone启动时,使用一些命令停止集群:
[root@pulsar pulsar]# bin/pulsar-daemon stop standalone
2.docker安装部署Pulsar(standalone)
2.1 使用docker 启动Pulsar
运行以下命令在 Docker 容器内启动 Pulsar
docker run -d \-p 6650:6650 -p 8080:8080 \--mount source=pulsardata,target=/pulsar/data \--mount source=pulsarconf,target=/pulsar/conf \--user=0 \apachepulsar/pulsar:2.11.4 bin/pulsar standalone
启动后会创建2个volume
[root@pulsar pulsar]# docker volume ls
DRIVER VOLUME NAME
local pulsarconf
local pulsardata
执行健康检查:
[root@pulsar pulsarconf]# docker exec -it d7a633a7b7d8 bash
root@d7a633a7b7d8:/pulsar# pwd
/pulsar
root@d7a633a7b7d8:/pulsar# bin/pulsar-admin brokers healthcheck
ok
2.2 使用客户端API测试集群
Pulsar 提供多种客户端库,例如Java、Go、Python、C++。
下面的示例使用Python 客户端 API开始使用 Pulsar。
直接从PyPI安装 Pulsar Python 客户端库
pip install pulsar-client
创建consumer.py,创建消费者并订阅主题:
import pulsarclient = pulsar.Client('pulsar://localhost:6650')
consumer = client.subscribe('my-topic', subscription_name='my-sub')while True:msg = consumer.receive()print("Received message: '%s'" % msg.data())consumer.acknowledge(msg)client.close()
创建producer.py启动生产者来发送一些测试消息:
import pulsarclient = pulsar.Client('pulsar://localhost:6650')
producer = client.create_producer('my-topic')for i in range(10):producer.send(('hello-pulsar-%d' % i).encode('utf-8'))client.close()
执行2个py脚本,consumer.py输出如下:
[root@pulsar docker_install]# python consumer.py
2025-04-14 17:26:52.515 INFO [140167888657472] Client:86 | Subscribing on Topic :my-topic
…
Received message: 'b'hello-pulsar-0''
Received message: 'b'hello-pulsar-1''
Received message: 'b'hello-pulsar-2''
Received message: 'b'hello-pulsar-3''
Received message: 'b'hello-pulsar-4''
Received message: 'b'hello-pulsar-5''
Received message: 'b'hello-pulsar-6''
Received message: 'b'hello-pulsar-7''
Received message: 'b'hello-pulsar-8''
Received message: 'b'hello-pulsar-9''
获取topic的统计数据:
curl http://localhost:8080/admin/v2/persistent/public/default/my-topic/stats | python -m json.tool