Pulsar standalone 成功启动需满足三条件:Java 版本严格匹配(如 Pulsar 3.0.x 需 Java 17)、端口 2181/6650/8080 未被占用、JVM 参数适配内存(如 2G 机器需设 -Xms512m -Xmx512m -XX:MaxDirectMemorySize=512m),且租户与命名空间须手动创建方可发消息。

pulsar standalone 能跑起来,不代表安装完成;很多人在 bin/pulsar standalone 报错后就卡住,其实核心就三件事:Java 版本对得上、端口没被占、内存配得够。
Java 版本必须匹配 Pulsar 版本
不是“装了 JDK 就行”,而是版本必须严格对应。比如:
- Pulsar 3.0.x → Broker 必须用
Java 17(java -version输出含17.) - Pulsar 2.8–2.10 → 推荐
Java 11,Java 8仅限客户端 - 用
openjdk-17最稳妥,别用 Oracle JDK 商用版(可能触发 license 检查) -
java -version和which java要一致;如果系统有多个 JDK,用update-alternatives --config java切换
端口冲突是 standalone 启动失败最常见原因
pulsar standalone 会自动拉起内置 ZooKeeper(占 2181)、Broker(6650)、Web 服务(8080)。只要其中一个端口被占,整个启动就 hang 住或报 BindException。
- 检查
2181:lsof -i :2181或ss -tuln | grep :2181 - 常见占用者:
zookeeper进程、docker容器、甚至其他 Java 应用(如旧版 Kafka) - 临时解决:杀掉进程
kill -9 $(lsof -t -i :2181);长期方案是改配置(见下一条) - 不想改端口?用 Docker 启动更干净:
docker run -p 6650:6650 -p 8080:8080 apachepulsar/pulsar:3.0.4 bin/pulsar standalone
小内存机器必须调低 JVM 参数
默认 PULSAR_MEM="-Xms2g -Xmx2g",在 2G 内存的 VPS 上直接 OOM。不改就启动失败,日志里只显示“no space”或静默退出。
将后端 Java 接口文档转换为前端 TypeScript 类型定义(interface / type)。输入:飞书文档、Spring Boot 接口文档、Swagger/OpenAPI、手写 API 文档等。输出:包含请求参数与响应结果的 .md 文件,含完整 JSDoc 注释。触发关键词:Java 转 TS、接口转换、生成前端类型、接口文档转 TypeScript、DTO/VO/BO 转 interface、后端文档转前端类型、生成接口类型、类型定义生成。
- 编辑
conf/pulsar_env.sh,找到PULSAR_MEM=...行,改成:PULSAR_MEM="-Xms512m -Xmx512m -XX:MaxDirectMemorySize=512m" - 注意:不能只改
-Xmx,-XX:MaxDirectMemorySize也必须同步下调,否则 BookKeeper 会因堆外内存不足崩溃 - 改完后重新执行
bin/pulsar standalone,看到Started Pulsar standalone和Web service started才算真正成功 - 验证:
curl http://localhost:8080/admin/v2/clusters应返回 JSON;bin/pulsar-client produce test-topic --messages "ok"不报错
租户和命名空间要手动创建才能发消息
刚启动的 standalone 默认只有 public/default namespace,但很多教程示例用的是自定义租户(如 my-tenant/my-ns),直接发消息会报:Policies not found for my-tenant/my-ns。
- 先建租户:
bin/pulsar-admin tenants create my-tenant - 再建 namespace:
bin/pulsar-admin namespaces create my-tenant/my-ns - 可选:设保留策略避免磁盘爆满:
bin/pulsar-admin namespaces set-retention my-tenant/my-ns --size -1 --time 3d - 此时才能用:
bin/pulsar-client produce my-tenant/my-ns/test-topic --messages "hello"
实际部署时最容易忽略的是 MaxDirectMemorySize 和租户初始化这两步——前者让 BookKeeper 在低配机器上反复 crash,后者让所有生产命令都返回 404。别跳过。










