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

二进制和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

相关文章:

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

#作者&#xff1a;闫乾苓 文章目录 1、二进制安装部署Pulsar(standalone)1.1 安装配置JDK1.2 下载解压pulsar安装包1.3 启动独立模式的Pulsar 集群1.4 创建主题测试1.5 向主题写入消息测试1.6 从主题中读取消息测试 2.docker安装部署Pulsar(standalone)2.1 使用docker 启动Pul…...

MySQL表与表之间的左连接和内连接

前言: 在上个实习生做的模块之中&#xff0c;在列表接口&#xff0c;涉及到多个表的联表查询的时候总会出现多条不匹配数据的奇怪的bug&#xff0c;我在后期维护的时候发现了&#xff0c;原来是这位实习生对MySQL的左连接和内连接不能正确的区分而导致的这种的情况。 表设置 …...

RAG知识库中引入MCP

MCP(Memory, Context, Planning)是一种增强AI系统认知能力的框架。将MCP引入RAG知识库可以显著提升系统的性能和用户体验。下面我将详细介绍如何实现这一整合。 MCP框架概述 MCP框架包含三个核心组件: Memory(记忆):存储和管理历史交互和知识Context(上下文):理解当…...

TDengine 性能监控与调优实战指南(二)

四、TDengine 性能调优实战 4.1 硬件层面优化 硬件是 TDengine 运行的基础&#xff0c;其性能直接影响着 TDengine 的整体表现。在硬件层面进行优化&#xff0c;就如同为高楼大厦打下坚实的地基&#xff0c;能够为 TDengine 的高效运行提供有力支持。 CPU&#xff1a;CPU 作…...

低代码开发平台:企业数字化转型的加速器

一、引言 在数字化时代&#xff0c;企业的转型需求日益迫切。为了在激烈的市场竞争中保持领先地位&#xff0c;企业需要快速响应市场变化、优化业务流程、提升运营效率。然而&#xff0c;传统的软件开发模式往往面临开发周期长、成本高、灵活性差等问题&#xff0c;难以满足企业…...

【AI图像创作变现】02工具推荐与差异化对比

引言 市面上的AI绘图工具层出不穷&#xff0c;但每款工具都有自己的“性格”&#xff1a;有的美学惊艳但无法微调&#xff0c;有的自由度极高却需要动手配置&#xff0c;还有的完全零门槛适合小白直接上手。本节将用统一格式拆解五类主流工具&#xff0c;帮助你根据风格、控制…...

相控阵列天线:原理、优势和类型

本文要点 相控阵列天线 &#xff08;Phased array antenna&#xff09; 是一种具有电子转向功能的天线阵列&#xff0c;不需要天线进行任何物理移动&#xff0c;即可改变辐射讯号的方向和形状。 这种电子转向要归功于阵列中每个天线的辐射信号之间的相位差。 相控阵列天线的基…...

【HD-RK3576-PI】Ubuntu桌面多显、旋转以及更新Logo

硬件&#xff1a;HD-RK3576-PI 软件&#xff1a;Linux6.1Ubuntu22.04 在基于HD-RK3576-PI硬件平台运行Ubuntu 22系统的开发过程中&#xff0c;屏幕方向调整是提升人机交互体验的关键环节。然而&#xff0c;由于涉及uboot引导阶段、内核启动界面、桌面环境显示全流程适配&#x…...

树莓派超全系列教程文档--(36)树莓派条件过滤器设置

树莓派条件过滤器设置 条件过滤器[all] 过滤器型号过滤器[none] 过滤器[tryboot] 过滤器[EDID*] 过滤器序列号过滤器GPIO过滤器组合条件过滤器 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 条件过滤器 当将单个 SD 卡&#xff08;或卡图像&am…...

【Rust 精进之路之第3篇-变量观】`let`, `mut` 与 Shadowing:理解 Rust 的变量绑定哲学

系列: Rust 精进之路:构建可靠、高效软件的底层逻辑 作者: 码觉客 发布日期: 2025-04-20 引言:为数据命名,Rust 的第一道“安全阀” 在上一篇文章中,我们成功搭建了 Rust 开发环境,并用 Cargo 运行了第一个程序,迈出了坚实的一步。现在,是时候深入了解构成程序的基…...

wordpress独立站的产品详情页添加WhatsApp链接按钮

在WordPress外贸独立站的产品展示页添加WhatsApp链接按钮&#xff0c;可以帮助客户更方便地与你联系。以下是实现这一功能的步骤&#xff1a; 方法一&#xff1a;使用HTML代码添加按钮 编辑产品展示页 进入WordPress后台&#xff0c;找到需要添加WhatsApp按钮的产品展示页。…...

jetpack之LiveData的原理解析

前言 在一通研究下&#xff0c;我打算LiveData的解析通过从使用的方法上面切入进行LiveData的工作原理分析&#x1f60b;。感觉这样子更能让大家伙理解明白&#xff0c;LiveData的实现和Lifecycle分不开&#xff0c;并且还得需要知道LiveData的使用会用到什么样的方法。所以&a…...

Viper配置管理笔记

一、什么是 Viper&#xff1f; Viper 是 Go 语言的一个强大工具&#xff0c;就像一个超级管家&#xff0c;专门负责帮你打理程序的各种配置。它能把配置文件&#xff08;比如 JSON、YAML、TOML 等格式&#xff09;里的内容读出来&#xff0c;还能监控配置文件的变化&#xff0…...

go+mysql+cocos实现游戏搭建

盲目的学了一段时间了&#xff0c;刚开始从Box2d开始学习&#xff0c;明白了很多&#xff0c;Box2d是物理模型的基础&#xff0c;是我们在游戏中模拟现实的很重要的一个开源工具。后来在朋友的建议下学习了cocos&#xff0c;也是小程序开发的利器&#xff0c;而golang是一款高效…...

【微知】服务器如何获取服务器的SN序列号信息?(dmidecode -t 1)

文章目录 背景命令dmidecode -t的数字代表的字段 背景 各种场景都需要获取服务器的SN&#xff08;Serial Number&#xff09;&#xff0c;比如问题定位&#xff0c;文件命名&#xff0c;该部分信息在dmi中是标准信息&#xff0c;不同服务器&#xff0c;不同os都能用相同方式获…...

Android开发中广播(Broadcast)技术详解

在 Android 开发中&#xff0c;广播&#xff08;Broadcast&#xff09; 是一种广泛使用的组件通信机制&#xff0c;它允许应用程序在不直接交互的情况下传递消息。本文将详细讲解 Android 广播的基本概念、类型、发送与接收流程、使用场景及注意事项&#xff0c;并结合具体的代…...

MySQL视图高级应用与最佳实践

1. 视图与索引的协同优化​​ ​​物化视图&#xff08;模拟实现&#xff09;​​ MySQL原生不支持物化视图&#xff0c;但可通过“定时刷新”的物理表模拟&#xff1a; -- 1. 创建存储结果的物理表 CREATE TABLE cached_monthly_sales (product_id INT,total_sales DECIMAL(10…...

xss4之cookie操作

一、登录网站情况分析 1. 登录状态与Cookie的关系 已登录状态: 当用户登录网站后&#xff0c;如admin123456&#xff0c;网站会通过某种方式&#xff08;如Cookie&#xff09;在客户端保存用户的登录状态。Cookie的作用: Cookie是服务器发送到用户浏览器并保存在本地的一小块…...

51c大模型~合集119

我自己的原文哦~ https://blog.51cto.com/whaosoft/13852062 #264页智能体综述 MetaGPT等20家顶尖机构、47位学者参与 近期&#xff0c;大模型智能体&#xff08;Agent&#xff09;的相关话题爆火 —— 不论是 Anthropic 抢先 MCP 范式的快速普及&#xff0c;还是 OpenAI …...

Vue3 + TypeScript,关于item[key]的报错处理方法

处理方法1&#xff1a;// ts-ignore 注释忽略报错 处理方法2&#xff1a;item 设置为 any 类型...

【记录】服务器用命令开启端口号

这里记录下如何在服务器上开启适用于外界访问的端口号。 方法 1 使用防火墙 1 su &#xff0c;命令 输入密码 切换到root节点 2 开启防火墙 systemctl start firewalld3 配置开放端口 firewall-cmd --zonepublic --add-port8282/tcp --permanent4 重启防火墙 firewall-cmd…...

如何优雅地实现全局唯一?深入理解单例模式

如何优雅地实现全局唯一&#xff1f;深入理解单例模式 一、什么是单例模式&#xff1f; 单例模式是一种创建型设计模式&#xff0c;旨在确保一个类只有一个实例&#xff0c;并为该实例提供全局访问点&#xff0c;从而避免全局变量的命名污染&#xff0c;并支持延迟初始化Wiki…...

25.4.20学习总结

如何使用listView组件来做聊天界面 1. 什么是CellFactory&#xff1f; 在JavaFX中&#xff0c;控件&#xff08;比如ListView、TableView等&#xff09;用Cell来显示每一条数据。 Cell&#xff1a;代表这个单元格&#xff08;即每个列表项&#xff09;中显示的内容和样式。 …...

Spring之我见 - Spring Boot Starter 自动装配原理

欢迎光临小站&#xff1a;致橡树 Spring Boot Starter 的核心设计理念是 约定优于配置&#xff0c;其核心实现基于 自动配置&#xff08;Auto-Configuration&#xff09; 和 条件化注册&#xff08;Conditional Registration&#xff09;。以下是其生效原理&#xff1a; 约定…...

如何高效利用呼叫中心系统和AI语音机器人

要更好地使用呼叫中心系统和语音机器人&#xff0c;需要结合两者的优势&#xff0c;实现自动化、智能化、高效率的客户服务与业务运营。以下是优化策略和具体实践方法&#xff1a; 一、呼叫中心系统优化 1. 智能路由与IVR优化 智能ACD&#xff08;自动呼叫分配&#xff09; …...

【Windows上配置Git环境】

在Windows上配置Git环境可以按照以下步骤进行&#xff1a; 1. 下载Git 打开浏览器&#xff0c;访问Git官方网站https://git-scm.com/downloads。在下载页面中&#xff0c;找到适用于Windows的下载链接&#xff0c;根据你的系统是32位还是64位选择相应的安装包进行下载 。 2.…...

OpenCV基础01-图像文件的读取与保存

介绍: OpenCV是 Open Souce C omputer V sion Library的简称。要使用OpenCV需要安装OpenCV包&#xff0c;使用前需要导入OpenCV模块 安装 命令 pip install opencv-python 导入 模块 import cv2 1. 图像的读取 import cv2 img cv2.imread(path, flag)这里的flag 是可选参数&…...

C 语言的未来:在变革中坚守与前行

C 语言&#xff0c;作为编程语言领域的一位 “老将”&#xff0c;自诞生以来就一直扮演着至关重要的角色。历经数十年的发展&#xff0c;它的影响力依然广泛而深远。在科技飞速发展的今天&#xff0c;新的编程语言如雨后春笋般不断涌现&#xff0c;C 语言的未来发展走向成为了众…...

go语言优雅关机和优雅重启笔记

一、优雅关机 生活化例子 餐馆关门&#xff1a;你去餐馆吃火锅&#xff0c;刚坐下点完菜&#xff08;客户端发请求&#xff09;&#xff0c;餐馆老板突然接到通知要停电&#xff08;收到关机指令&#xff09;。老板很贴心&#xff0c;先停止接待新客人&#xff08;停止接收新请…...

【算法】计数排序、桶排序、基数排序

算法系列八&#xff1a;非比较排序 一、计数排序 1.实现 1.1步骤 1.2代码 2.性质 2.1稳定性 2.1.1从前往后前始版&#xff1a; 2.1.2从后往前末始版&#xff1a; 2.2复杂度 2.2.1时间复杂度 2.2.2空间复杂度 二、桶排序 1.实现 1.1步骤 1.2代码 2.稳定性 三、…...