Pulsar【部署 01】消息队列PULSAR在Linux环境的主程序安装使用(小内存服务器问题处理)

官方网站:https://pulsar.apache.org/
对于本地开发和测试,您可以在机器上以单机模式运行Pulsar。单机模式在单个Java虚拟机(JVM)进程中运行所有组件。本地单机版安装手册:

在这里插入图片描述

1.Prerequisites

1.1 Pulsar Runtime Java Version Recommendation

  • pulsar ver > 2.10 and master branch
Components Java Version
Broker 17
Functions / IO 17
CLI 17
Java Client 8 or 11 or 17
  • 2.8 <= pulsar ver <= 2.10
Components Java Version
Broker 11
Functions / IO 11
CLI 8 or 11
Java Client 8 or 11
  • pulsar ver < 2.8
Components Java Version
All 8 or 11

如果服务器使用的是JDK8,可以使用Docker进行部署。

1.2 本次安装环境

# 1.系统
CentOS Linux release 7.9.2009 (Core)

# 2.JDK
java version "17.0.7" 2023-04-18 LTS
Java(TM) SE Runtime Environment (build 17.0.7+8-LTS-224)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.7+8-LTS-224, mixed mode, sharing)

2.安装

2.1 下载安装包

# 官网代码
wget https://archive.apache.org/dist/pulsar/pulsar-x.x.x/apache-pulsar-x.x.x-bin.tar.gz

也可以在官网进行下载,本次下载的文件为长期支持版本apache-pulsar-3.0.4-bin.tar.gz
image.png

2.2 解压并验证文件

# 实例
tar -zxvf apache-pulsar-3.0.4-bin.tar.gz

对于这个快速入门的其余部分,所有命令都是从分发文件夹的根目录运行的,所以切换到它:

# 实例
cd apache-pulsar-3.0.4
# 列出根目录下目录
ls -1F

以下描述来自官网:

Directory Description
bin The pulsar entry point script, and many other command-line tools
conf Configuration files, including broker.conf
lib JARs used by Pulsar
examples Pulsar Functions examples
instances Artifacts for Pulsar Functions

2.3 启动单机版

Pulsar的内存默认需要2G对于较小内存的服务器可以修改conf/pulsar_env.sh文件,否则启动时报killed

# Extra options to be passed to the jvm
PULSAR_MEM=${PULSAR_MEM:-"-Xms2g -Xmx2g -XX:MaxDirectMemorySize=4g"}

可进行环境变量配置,配置后可以不在根目录下执行命令:

# 进行环境变量配置
# 1.添加配置文件
vim /etc/profile.d/pulsar.sh
  # pulsar.sh文件内容:
  export PULSAR_HOME=/path/to/pulsar /opt/pulsar/apache-pulsar-3.0.4
  export PATH=$PATH:$PULSAR_HOME/bin

# 2.配置文件生效
# chmod +x /etc/profile.d/pulsar.sh
source /etc/profile.d/pulsar.sh

# 3.启动
pulsar standalone

启动后以下目录会被创建,官网描述如下:

Directory Description
data All data created by BookKeeper and RocksDB
logs All server-side logs

如果想要以守护线程启动可以执行以下命令,更多信息可参阅 pulsar-daemon

bin/pulsar-daemon start standalone

在启动Pulsar时会创建命名空间public/default它用于开发目的。所有的Topic都在命名空间中进行管理,更多信息可参阅 NamespacesTopics

2.4 创建Topic

Pulsar在主题中存储消息。在使用主题之前显式地创建主题是一个很好的实践,即使Pulsar可以在引用主题时自动创建主题。创建一个新的主题,使用命令:

# 实例
pulsar-admin topics create persistent://public/default/test-topic

在 Pulsar 中,主题名称由以下几个部分组成:

  • persistent: 表示这是一个持久化主题。这意味着发布的消息会被持久化存储在磁盘上,即使在 broker 故障或重启后,消息仍然可以被恢复和消费。与之相对的是非持久化主题(non-persistent),其消息仅存储在内存中,不保证消息的持久化。
  • public/default: 这部分指定了主题所在的命名空间(namespace)。在 Pulsar 中,命名空间是对相关主题进行逻辑分组的层级结构,提供了一种管理多个主题的方式,如设置配额、权限、策略等。public 是租户(tenant)名,通常代表一个共享的、无特定访问控制的环境;default 是在该租户下的一个默认命名空间。租户和命名空间共同构成了主题的命名上下文。
  • my-topic: 最后一部分是主题的实际名称,即在给定命名空间内唯一标识该主题的字符串。用户可以根据实际业务需求来命名主题。

2.5 发送消息

可以使用Pulsar命令行工具向主题写入消息。这对于实验很有用,但在实践中,在应用程序代码中使用Producer API,或者使用Pulsar IO连接器将数据从其他系统拉入Pulsar。运行命令生成一条消息:

# 实例
pulsar-client produce test-topic --messages 'Hello Pulsar!'
# 日志
2024-04-08T11:17:55,328+0800 [main] INFO  org.apache.pulsar.client.cli.PulsarClientTool - 1 messages successfully produced

2.6 读取消息

使用下命的命令从主题中读取消息:

# 实例
pulsar-client consume test-topic -s 'test-subscription' -p Earliest -n 0

具体的参数信息这里不再介绍,收到的消息体如下:

# 再发送1条消息【可看到如下信息】
----- got message -----
key:[null], properties:[], content:Hello Pulsar!

2.7 发送更多的消息

# 实例
pulsar-client produce test-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.2
----- got message -----
key:[null], properties:[], content:Message NO.3
----- got message -----
key:[null], properties:[], content:Message NO.4
----- got message -----
key:[null], properties:[], content:Message NO.5
----- got message -----
key:[null], properties:[], content:Message NO.6
----- got message -----
key:[null], properties:[], content:Message NO.7
----- got message -----
key:[null], properties:[], content:Message NO.8
----- got message -----
key:[null], properties:[], content:Message NO.9
----- got message -----
key:[null], properties:[], content:Message NO.10

3.总结

安装过程还是很简单的,使用起来跟Kafka也很类似。

相关推荐

  1. (二)pulsar安装独立docker中,python测试

    2024-04-21 19:30:07       40 阅读
  2. pulsar: 批量接收消息

    2024-04-21 19:30:07       43 阅读
  3. 消息队列Pulsar、kafaka、rabbitmq、mqtt、RocketMQ

    2024-04-21 19:30:07       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-21 19:30:07       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-21 19:30:07       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-21 19:30:07       82 阅读
  4. Python语言-面向对象

    2024-04-21 19:30:07       91 阅读

热门阅读

  1. ARM Day7

    2024-04-21 19:30:07       37 阅读
  2. Linux-System V共享内存

    2024-04-21 19:30:07       41 阅读
  3. Stable Diffusion 本地部署教程

    2024-04-21 19:30:07       31 阅读
  4. Solidity基础面试题

    2024-04-21 19:30:07       28 阅读
  5. Scala之List

    2024-04-21 19:30:07       32 阅读
  6. 自定义组件

    2024-04-21 19:30:07       29 阅读
  7. Git恢复至某一个提交的状态

    2024-04-21 19:30:07       33 阅读
  8. 【大模型系列】目录

    2024-04-21 19:30:07       35 阅读
  9. GoLang核心知识点

    2024-04-21 19:30:07       35 阅读
  10. Angular自定义异步表单验证

    2024-04-21 19:30:07       32 阅读
  11. Scala之面向对象 Day -3

    2024-04-21 19:30:07       44 阅读
  12. 134. 加油站

    2024-04-21 19:30:07       30 阅读