当前位置: 首页 > news >正文

二进制和docker两种方式部署Apache pulsar(standalone)

#作者:闫乾苓

文章目录

  • 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 版本
Broker17
Functions / IO17
CLI17
Java Client8 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 集群启动时,会创建以下目录:

目录描述
dataBookKeeper 和 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

相关文章:

  • Flink运行时架构
  • Vue3 nextTick
  • 基于sherpa-onnx 安卓语音识别尝鲜
  • 与AI深度融合的Go开发框架sponge,解决使用cursor、trae等AI辅助编程工具开发项目时的部分痛点
  • n8n 为技术团队打造的安全工作流自动化平台
  • 优化 Dockerfile 性能之实践(Practice of Optimizing Dockerfile Performance)
  • 【场景应用9】多语言预训练语音模型进行自动语音识别
  • 基于骨骼识别的危险动作报警分析系统
  • 基于uniapp的鸿蒙APP大数据量性能优化
  • 招贤纳士|Walrus 亚太地区招聘高级开发者关系工程师
  • 量化视角:比特币美债黄金三角博弈的DeepSeek推演
  • 1.2 使用RawInputSharp来取得键盘硬件信息以及虚拟码
  • Being-0:具有视觉-语言模型和模块化技能的人形机器人智体
  • QT —— 信号和槽(槽函数)
  • 【1】CICD持续集成-docker本地搭建gitlab代码仓库社区版
  • 用cursor三个小时复刻高德地图的足迹地图
  • 突发重磅消息!!!CVE项目将被取消?
  • MySQL的MVCC机制详解
  • SQL刷题日志(day2)
  • 【AI】IDEA 集成 AI 工具的背景与意义
  • 打折网站运营思路/长春网站制作企业
  • 赛车pk10计划网站建设/免费注册
  • 个人备案后做淘客网站/什么都不懂能去干运营吗
  • wordpress 内存/深圳seo优化推广公司
  • 网站有后台更新不了/百度云资源链接分享群组
  • wordpress 打不开页面/seo怎么做