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

本文主要是介绍Pulsar【部署 01】消息队列PULSAR在Linux环境的主程序安装使用(小内存服务器问题处理),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

消息队列PULSAR在Linux环境的主程序安装使用

  • 1.Prerequisites
    • 1.1 Pulsar Runtime Java Version Recommendation
    • 1.2 本次安装环境
  • 2.安装
    • 2.1 下载安装包
    • 2.2 解压并验证文件
    • 2.3 启动单机版
    • 2.4 创建Topic
    • 2.5 发送消息
    • 2.6 读取消息
    • 2.7 发送更多的消息
  • 3.总结

在这里插入图片描述

1.Prerequisites

  • Pulsar当前可在64位的macOS和Linux上运行,如果想在Windows上运行可参阅 Run Pulsar In Docker;
  • 此外,还需要安装合适的64位JRE/JDK版本。请参考 Pulsar Runtime Java Version Recommendation。

1.1 Pulsar Runtime Java Version Recommendation

  • pulsar ver > 2.10 and master branch
ComponentsJava Version
Broker17
Functions / IO17
CLI17
Java Client8 or 11 or 17
  • 2.8 <= pulsar ver <= 2.10
ComponentsJava Version
Broker11
Functions / IO11
CLI8 or 11
Java Client8 or 11
  • pulsar ver < 2.8
ComponentsJava Version
All8 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

以下描述来自官网:

DirectoryDescription
binThe pulsar entry point script, and many other command-line tools
confConfiguration files, including broker.conf
libJARs used by Pulsar
examplesPulsar Functions examples
instancesArtifacts 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.4export PATH=$PATH:$PULSAR_HOME/bin# 2.配置文件生效
# chmod +x /etc/profile.d/pulsar.sh
source /etc/profile.d/pulsar.sh# 3.启动
pulsar standalone

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

DirectoryDescription
dataAll data created by BookKeeper and RocksDB
logsAll server-side logs

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

bin/pulsar-daemon start standalone

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

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也很类似。

这篇关于Pulsar【部署 01】消息队列PULSAR在Linux环境的主程序安装使用(小内存服务器问题处理)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/915026

相关文章

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx

springboot中使用okhttp3的小结

《springboot中使用okhttp3的小结》OkHttp3是一个JavaHTTP客户端,可以处理各种请求类型,比如GET、POST、PUT等,并且支持高效的HTTP连接池、请求和响应缓存、以及异... 在 Spring Boot 项目中使用 OkHttp3 进行 HTTP 请求是一个高效且流行的方式。

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除