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

相关文章

Python字符串处理方法超全攻略

《Python字符串处理方法超全攻略》字符串可以看作多个字符的按照先后顺序组合,相当于就是序列结构,意味着可以对它进行遍历、切片,:本文主要介绍Python字符串处理方法的相关资料,文中通过代码介... 目录一、基础知识:字符串的“不可变”特性与创建方式二、常用操作:80%场景的“万能工具箱”三、格式化方法

Spring Boot 处理带文件表单的方式汇总

《SpringBoot处理带文件表单的方式汇总》本文详细介绍了六种处理文件上传的方式,包括@RequestParam、@RequestPart、@ModelAttribute、@ModelAttr... 目录方式 1:@RequestParam接收文件后端代码前端代码特点方式 2:@RequestPart接

C#中checked关键字的使用小结

《C#中checked关键字的使用小结》本文主要介绍了C#中checked关键字的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录✅ 为什么需要checked? 问题:整数溢出是“静默China编程”的(默认)checked的三种用

C#中预处理器指令的使用小结

《C#中预处理器指令的使用小结》本文主要介绍了C#中预处理器指令的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 第 1 名:#if/#else/#elif/#endif✅用途:条件编译(绝对最常用!) 典型场景: 示例

JAVA Calendar设置上个月时,日期不存在或错误提示问题及解决

《JAVACalendar设置上个月时,日期不存在或错误提示问题及解决》在使用Java的Calendar类设置上个月的日期时,如果遇到不存在的日期(如4月31日),默认会自动调整到下个月的相应日期(... 目录Java Calendar设置上个月时,日期不存在或错误提示java进行日期计算时如果出现不存在的

Mybatis对MySQL if 函数的不支持问题解读

《Mybatis对MySQLif函数的不支持问题解读》接手项目后,为了实现多租户功能,引入了Mybatis-plus,发现之前运行正常的SQL语句报错,原因是Mybatis不支持MySQL的if函... 目录MyBATis对mysql if 函数的不支持问题描述经过查询网上搜索资料找到原因解决方案总结Myb

Nginx错误拦截转发 error_page的问题解决

《Nginx错误拦截转发error_page的问题解决》Nginx通过配置错误页面和请求处理机制,可以在请求失败时展示自定义错误页面,提升用户体验,下面就来介绍一下Nginx错误拦截转发error_... 目录1. 准备自定义错误页面2. 配置 Nginx 错误页面基础配置示例:3. 关键配置说明4. 生效

mysql_mcp_server部署及应用实践案例

《mysql_mcp_server部署及应用实践案例》文章介绍了在CentOS7.5环境下部署MySQL_mcp_server的步骤,包括服务安装、配置和启动,还提供了一个基于Dify工作流的应用案例... 目录mysql_mcp_server部署及应用案例1. 服务安装1.1. 下载源码1.2. 创建独立

Mysql中RelayLog中继日志的使用

《Mysql中RelayLog中继日志的使用》MySQLRelayLog中继日志是主从复制架构中的核心组件,负责将从主库获取的Binlog事件暂存并应用到从库,本文就来详细的介绍一下RelayLog中... 目录一、什么是 Relay Log(中继日志)二、Relay Log 的工作流程三、Relay Lo

使用Redis实现会话管理的示例代码

《使用Redis实现会话管理的示例代码》文章介绍了如何使用Redis实现会话管理,包括会话的创建、读取、更新和删除操作,通过设置会话超时时间并重置,可以确保会话在用户持续活动期间不会过期,此外,展示了... 目录1. 会话管理的基本概念2. 使用Redis实现会话管理2.1 引入依赖2.2 会话管理基本操作