pulsar使用过程中的坎坷

本文主要讲述了Pulsar的安装与使用问题。安装时配置extraServerComponents选项会使bookie.out启动日志打印异常,这是2.2版本的bug。使用方面,分区topic不支持游标回滚,回滚也不精确;ack批量提交后一段时间不消费会抛出警告,可能是错误报警。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

其实pulsar的安装算是比较简单的。主要分为两部分bookie和broker,而我们只需要将配置文件修改好,环境准备好基本都能安装运行了。

安装步骤我就不说了,有不知道的小伙伴可以去看看楼主其他博客,有步骤的讲解。

现在说一下安装时碰到的一个小问题,花费了楼主一下午的时间,才发现不是自己的问题。

1. 安装篇,配置

extraServerComponents=org.apache.bookkeeper.stream.server.StreamStorageLifecycleComponent

如果你配置了这个的话。当然坑不在此,楼主安装软件之后喜欢看启动的日志。也就是这个步骤发现了pulsar的一个小坑。

配置了extraServerComponents这个选项,会造成bookie.out启动日志中打印一条异常日志,当时楼主是第一次安装pulsar,发现日志感觉很奇怪,对比pulsar的安装文档仔细研读了一遍(后来又重新操作了一遍),发现自己操作的完全没错误。那是因为什么呢,看官网上有测试例子,使用了一下发现pulsar可以正常使用,使用客户端写好代码后发现生产消费都是正常的,但是这个异常因为什么呢???百思不得其解。后来经过询问pulsar官方人员才知道,是一个bug,2.2版本不支持这个功能,2.3版本的不清楚,直接在2.2上升级,此功能也没有开启。

2. 使用篇

- 游标功能:

前面写了一个博客专门讲解了游标的使用和回滚测试。现在说一下感受和坑吧。
因为项目需求,可能对一些topic有回滚的需求
对分区topic不支持游标回滚功能,但是提供的api只能创建分区topic。后来楼主想了一个点子,只使用其中一个分区,例如partitioned-0分区,后来测试果然可以使用游标回滚功能了,但是坑的点还不止于此,不论是seek(),还是resetCursor(),回滚的都不精确,没办法后来干脆不管理这个了,不回滚了。期待后期能有所改进吧

- ack批量提交处理功能

consumer.acknowledgeCumulative( message.getMessageId() );
这个的确可以批量回滚,这个没问题,但是批量提交ack之后,一段时间不消费你会发现它会抛出一个警告。
UnAckedMessageTracker.java:116 ## [ConsumerBase{subscription=‘32010’, consumerName=‘32010’, topic=‘persistent://xxxxx/xxx/32010_172.16.4.219-partition-0’}] 361 messages have timed-out
这个楼主不能忍,当时就看代码去了。因为有可能会造成消息的重复消费,这个问题就严重了。后来发现写的逻辑的确没什么问题。然后老方法询问官方,可能是bug。然后不死心的楼主在线下开始测试起来,发现数据量比较大的时候的确有这个现象,然后楼主测试是否回滚成功,发现也已经回滚成功,那这是为什么呢?经过询问pulsar官方人员,可能是个错误报警,等后续吧。

<think>好的,用户想了解如何在Docker Desktop中使用Pulsar的教程,包括安装配置和运行指南。我需要根据提供的引用内容来组织回答。 首先,引用[1]提到通过Docker安装Apache Pulsar的指南,这应该是主要的参考点。用户可能已经安装了Docker Desktop,但需要确认他们的系统环境是否满足要求,比如Windows版本和Docker的配置。引用[2]提到在Windows上安装Docker和Docker Compose,这可能对用户有帮助,但用户的问题已经集中在Docker Desktop上,所以可能需要简要提及环境准备步骤。 接下来,我需要分步骤说明安装和配置Pulsar使用Docker命令拉取Pulsar镜像,运行容器,并验证是否成功。这部分需要具体的命令示例,比如docker run的参数,端口映射等。此外,用户可能需要知道如何访问Pulsar的管理界面和客户端连接,所以需要提供对应的URL和端口信息。 然后,运行指南部分应该包括基本操作,比如创建主题、生产者和消费者。这里需要用代码示例来展示,比如使用pulsar-client工具执行命令。同时,优化配置方面,可以提到挂载卷持久化数据和使用Docker Compose管理多容器部署,引用[2]中的Docker Compose部分可以支持这一点。 用户可能还会遇到常见问题,比如端口冲突或者容器无法启动,需要给出解决方案。例如,检查端口占用情况,查看容器日志等。这些步骤能帮助用户自行排查问题。 最后,生成相关问题需要考虑用户可能进一步的需求,比如集群部署、管理工具、性能优化和与其他系统的集成。这些问题可以引导用户深入学习和应用Pulsar。 需要确保所有数学公式和独立公式符合LaTeX格式要求,但在这个问题中可能涉及较少数学内容。回答要使用中文,结构清晰,步骤详细,并正确引用提供的资料。同时,要检查命令的正确性,避免错误,比如正确的镜像名称和端口号。</think>### Docker Desktop 中 Apache Pulsar安装使用指南 #### 一、环境准备 1. **安装 Docker Desktop** 确保已安装最新版 [Docker Desktop](https://www.docker.com/products/docker-desktop/)(Windows/Mac 均适用),并启用 WSL2(Windows 用户)或 HyperKit(Mac 用户)[^2]。 2. **验证 Docker 运行状态** 打开终端,输入以下命令: ```bash docker --version ``` 若返回版本号(如 `Docker version 24.0.7`),则安装成功。 --- #### 二、安装与配置 Apache Pulsar 1. **拉取 Pulsar 镜像** 使用官方镜像 `apachepulsar/pulsar`: ```bash docker pull apachepulsar/pulsar:latest ``` 2. **启动 Pulsar 单机模式容器** 运行以下命令启动包含所有组件的容器(包括 Broker、BookKeeper、ZooKeeper): ```bash docker run -d \ -p 6650:6650 -p 8080:8080 \ --name pulsar-standalone \ apachepulsar/pulsar:latest \ bin/pulsar standalone ``` - **端口说明** - `6650`: Pulsar 服务端口 - `8080`: Admin API 和管理界面端口 3. **验证运行状态** 检查容器日志: ```bash docker logs pulsar-standalone ``` 若输出包含 `Server started at http://0.0.0.0:8080`,则启动成功。 --- #### 三、基本操作指南 1. **访问管理界面** 浏览器打开 `http://localhost:8080`,可查看集群状态、租户(Tenant)、命名空间(Namespace)和主题(Topic)。 2. **使用 Pulsar 客户端** 进入容器执行命令: ```bash docker exec -it pulsar-standalone /bin/bash ``` - **生产消息** ```bash bin/pulsar-client produce my-topic --messages "Hello Pulsar" ``` - **消费消息** ```bash bin/pulsar-client consume my-topic -s "my-subscription" ``` --- #### 四、配置优化 1. **数据持久化** 挂载本地目录保存数据: ```bash docker run -d \ -v /path/to/pulsar/data:/pulsar/data \ -p 6650:6650 -p 8080:8080 \ --name pulsar-standalone \ apachepulsar/pulsar:latest \ bin/pulsar standalone ``` 2. **使用 Docker Compose 部署** 创建 `docker-compose.yml` 文件: ```yaml version: '3' services: pulsar: image: apachepulsar/pulsar:latest command: bin/pulsar standalone --no-functions-worker -nss ports: - "6650:6650" - "8080:8080" volumes: - ./data:/pulsar/data ``` 启动服务: ```bash docker-compose up -d ``` --- #### 五、常见问题解决 1. **端口冲突** 若 `8080` 或 `6650` 被占用,修改映射端口(如 `-p 8081:8080`)。 2. **容器启动失败** 检查日志定位错误: ```bash docker logs pulsar-standalone ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值