二進制和docker兩種方式部署Apache pulsar(standalone)

#作者:閆乾苓

文章目錄

  • 1、二進制安裝部署Pulsar(standalone)
    • 1.1 安裝配置JDK
    • 1.2 下載解壓pulsar安裝包
    • 1.3 啟動獨立模式的Pulsar 集群
    • 1.4 創建主題測試
    • 1.5 向主題寫入消息測試
    • 1.6 從主題中讀取消息測試
  • 2.docker安裝部署Pulsar(standalone)
    • 2.1 使用docker 啟動Pulsar
    • 2.2 使用客戶端API測試集群

1、二進制安裝部署Pulsar(standalone)

1.1 安裝配置JDK

根據官方文檔要求,需要安裝合適的 64 位 JRE/JDK 版本。請參考Pulsar Runtime Java 版本建議

組件Java 版本
Broker17
Functions / IO17
CLI17
Java Client8 or 11 or 17

Openjdk17下載地址:
https://adoptium.net/zh-CN/temurin/releases/?variant=openjdk17

# 解壓下載的安裝包
[root@pulsar ~]# tar xf OpenJDK17U-jdk_x64_linux_hotspot_17.0.14_7.tar.gz -C /opt# 配置軟連接
[root@pulsar ~]# ln -s /opt/jdk-17.0.14+7/ /opt/openjdk-17# 配置PATH環境
[root@pulsar ~]# cat >> /etc/profile << EOF
export JAVA_HOME=/opt/openjdk-17
export PATH=\$JAVA_HOME/bin:\$PATH
EOF# 使PATH環境生效
[root@pulsar ~]# source /etc/profile# 驗證,能輸出正確版本為配置成功
[root@pulsar ~]#  java -version
openjdk version "17.0.14" 2025-01-21
OpenJDK Runtime Environment Temurin-17.0.14+7 (build 17.0.14+7)
OpenJDK 64-Bit Server VM Temurin-17.0.14+7 (build 17.0.14+7, mixed mode, sharing)

1.2 下載解壓pulsar安裝包

# 下載安裝包
[root@pulsar ~]# wget https://archive.apache.org/dist/pulsar/pulsar-2.11.4/apache-pulsar-2.11.4-bin.tar.gz
# 解壓到/opt
[root@pulsar ~]# tar xf apache-pulsar-2.11.4-bin.tar.gz -C /opt/# 設置軟連接
[root@pulsar opt]# ln -s /opt/apache-pulsar-2.11.4/ /opt/pulsar

1.3 啟動獨立模式的Pulsar 集群

[root@pulsar ~]# cd /opt/pulsar/
[root@pulsar ~]# bin/pulsar standalone

Pulsar 集群啟動時,會創建以下目錄:

目錄描述
dataBookKeeper 和 RocksDB 創建的所有數據
Log所有服務器端日志
  • 要將服務作為后臺進程運行,可以使用該bin/pulsar-daemon start standalone命令。
  • 命名空間public/default是在啟動 Pulsar 集群時創建的。此命名空間用于開發目的。所有 Pulsar 主題均在命名空間內進行管理。

1.4 創建主題測試

Pulsar 將消息存儲在主題中。即使 Pulsar 可以在引用主題時自動創建主題,在使用主題之前明確創建主題也是一種很好的做法。
要創建新主題,請運行以下命令:
[root@pulsar pulsar]# bin/pulsar-admin topics create persistent://public/default/my-topic

1.5 向主題寫入消息測試

[root@pulsar pulsar]# bin/pulsar-client produce my-topic --messages 'Hello Pulsar!'
…
2025-04-14T11:30:37,582+0800 [main] INFO  org.apache.pulsar.client.cli.PulsarClientTool - 1 messages successfully produced

1.6 從主題中讀取消息測試

[root@pulsar pulsar]# bin/pulsar-client consume my-topic -s 'my-subscription' -p Earliest -n 0

Earliest 表示從最早的未消費消息開始消費。-n配置消費的消息數量,0 表示永遠消費。
一個shell終端寫入,另外一個終端讀取:
----- got message -----
key:[null], properties:[], content:Hello Pulsar!-0
----- got message -----
key:[null], properties:[], content:Hello Pulsar!-1
----- got message -----
key:[null], properties:[], content:Hello Pulsar!-2
1.7 批量寫入消息
[root@pulsar pulsar]# bin/pulsar-client produce my-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.10
1.8 停止Pulsar
使用bin/pulsar standalone啟動時,使用Ctrl-C停止。
使用bin/pulsar-daemon start standalone啟動時,使用一些命令停止集群:
[root@pulsar pulsar]# bin/pulsar-daemon stop standalone

2.docker安裝部署Pulsar(standalone)

2.1 使用docker 啟動Pulsar

運行以下命令在 Docker 容器內啟動 Pulsar

docker run -d \-p 6650:6650 -p 8080:8080 \--mount source=pulsardata,target=/pulsar/data \--mount source=pulsarconf,target=/pulsar/conf \--user=0 \apachepulsar/pulsar:2.11.4 bin/pulsar standalone

啟動后會創建2個volume

[root@pulsar pulsar]# docker volume ls
DRIVER    VOLUME NAME
local     pulsarconf
local     pulsardata

執行健康檢查:

[root@pulsar pulsarconf]# docker exec -it d7a633a7b7d8 bash
root@d7a633a7b7d8:/pulsar# pwd
/pulsar
root@d7a633a7b7d8:/pulsar# bin/pulsar-admin brokers healthcheck
ok

2.2 使用客戶端API測試集群

Pulsar 提供多種客戶端庫,例如Java、Go、Python、C++。
下面的示例使用Python 客戶端 API開始使用 Pulsar。
直接從PyPI安裝 Pulsar Python 客戶端庫
pip install pulsar-client

創建consumer.py,創建消費者并訂閱主題:

import pulsarclient = pulsar.Client('pulsar://localhost:6650')
consumer = client.subscribe('my-topic', subscription_name='my-sub')while True:msg = consumer.receive()print("Received message: '%s'" % msg.data())consumer.acknowledge(msg)client.close()

創建producer.py啟動生產者來發送一些測試消息:

import pulsarclient = pulsar.Client('pulsar://localhost:6650')
producer = client.create_producer('my-topic')for i in range(10):producer.send(('hello-pulsar-%d' % i).encode('utf-8'))client.close()

執行2個py腳本,consumer.py輸出如下:

[root@pulsar docker_install]# python consumer.py 
2025-04-14 17:26:52.515 INFO  [140167888657472] Client:86 | Subscribing on Topic :my-topic
…
Received message: 'b'hello-pulsar-0''
Received message: 'b'hello-pulsar-1''
Received message: 'b'hello-pulsar-2''
Received message: 'b'hello-pulsar-3''
Received message: 'b'hello-pulsar-4''
Received message: 'b'hello-pulsar-5''
Received message: 'b'hello-pulsar-6''
Received message: 'b'hello-pulsar-7''
Received message: 'b'hello-pulsar-8''
Received message: 'b'hello-pulsar-9''

獲取topic的統計數據:

curl http://localhost:8080/admin/v2/persistent/public/default/my-topic/stats | python -m json.tool

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/79754.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/79754.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/79754.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何在 Go 中創建和部署 AWS Lambda 函數

AWS Lambda 是一個無服務器計算平臺&#xff0c;您可以使用自己喜歡的編程語言編寫代碼&#xff0c;無需擔心設置虛擬機。 您只需為 Lambda 函數的調用次數和運行時間&#xff08;毫秒&#xff09;付費。 我們大多數人都了解 JavaScript 和 Python&#xff0c;但它們的內存效率…

STM32配置系統時鐘

1、STM32配置系統時鐘的步驟 1、系統時鐘配置步驟 先配置系統時鐘&#xff0c;后面的總線才能使用時鐘頻率 2、外設時鐘使能和失能 STM32為了低功耗&#xff0c;一開始是關閉了所有的外設的時鐘&#xff0c;所以外設想要工作&#xff0c;首先就要打開時鐘&#xff0c;所以后面…

[安全實戰]逆向工程核心名詞詳解

逆向工程核心名詞詳解 一、調試與執行類 1. 斷點&#xff08;Breakpoint&#xff09; 定義&#xff1a;在代碼中設置標記&#xff0c;使程序執行到此處時暫停類型&#xff1a; 普通斷點&#xff1a;通過INT3指令實現條件斷點&#xff1a;滿足特定條件時觸發內存斷點&#xf…

Mac mini 安裝mysql數據庫以及出現的一些問題的解決方案

首先先去官網安裝一下mysql數據庫&#xff0c;基本上都是傻瓜式安裝的流程&#xff0c;我也就不詳細說了。 接下來就是最新版的mysql安裝的時候&#xff0c;他就會直接讓你設置一個新的密碼。 打開設置&#xff0c;拉到最下面就會看到一個mysql的圖標&#xff1a; 我設置的就是…

聚寬策略----國九條后中小板微盤小改,年化135.40%

最近在研究的聚寬策略&#xff0c;一般技術分析的我直接轉qmt了&#xff0c;財務因子有一點麻煩&#xff0c;我直接利用我開發強大的服務器系統&#xff0c;直接讀取信號&#xff0c;最近在優化一下系統&#xff0c;最近在開發對接bigquant的交易系統&#xff0c;完成了api數據…

C語言狀態字與庫函數詳解:概念辨析與應用實踐

C語言狀態字與庫函數詳解&#xff1a;概念辨析與應用實踐 一、狀態字與庫函數的核心概念區分 在C語言系統編程中&#xff0c;"狀態字"和"庫函數"是兩個經常被混淆但本質完全不同的概念&#xff0c;理解它們的區別是掌握系統編程的基礎。 1. 狀態字&…

End-to-End從混沌到秩序:基于LLM的Pipeline將非結構化數據轉化為知識圖譜

摘要:本文介紹了一種將非結構化數據轉換為知識圖譜的端到端方法。通過使用大型語言模型(LLM)和一系列數據處理技術,我們能夠從原始文本中自動提取結構化的知識。這一過程包括文本分塊、LLM 提示設計、三元組提取、歸一化與去重,最終利用 NetworkX 和 ipycytoscape 構建并可…

Leetcode 3523. Make Array Non-decreasing

Leetcode 3523. Make Array Non-decreasing 1. 解題思路2. 代碼實現 題目鏈接&#xff1a;3523. Make Array Non-decreasing 1. 解題思路 這一題思路上來說就是一個棧的問題&#xff0c;就是從后往前依次考察每一個元素&#xff0c;顯然&#xff0c;當前位置要么被舍棄&…

探秘STM32如何成為現代科技的隱形引擎

STM32單片機原理與應用 前言&#xff1a;微型計算機的硅腦 在我們身邊的每一個智能設備中&#xff0c;都隱藏著一個小小的"硅腦"——單片機。它們體積微小&#xff0c;卻能執行復雜的運算和控制功能&#xff0c;就像是現代科技世界的"神經元"。STM32系列…

機制的作用

“機制”是一個廣泛使用的概念&#xff0c;其含義和應用范圍因領域而異。在不同的學科和實際應用中&#xff0c;機制有著不同的定義和功能。以下從幾個主要領域對“機制”進行詳細解釋&#xff1a; 一、自然科學中的機制 &#xff08;一&#xff09;物理學 定義 在物理學中&…

prim最小生成樹+最大生成樹【C++】板子題

什么是最小生成樹&#xff1f; 在一給定的無向圖G (V, E) 中&#xff0c;(u, v) 代表連接頂點 u 與頂點 v 的邊&#xff0c;而 w(u, v) 代表此的邊權重&#xff0c;若存在 T 為 E 的子集&#xff08;即&#xff09;且為無循環圖&#xff0c;使得的 w(T) 最小&#xff0c;則此 …

讀書筆記--MySQL索引

索引(在 MySQL 中也叫做“鍵(key)”)是存儲引擎用于快速找到記錄的一種數據結構。 索引對于良好的性能非常關鍵。尤其是當表中的數據量越來越大時&#xff0c;索引對性能的影響愈發重要。在數據量較小且負載較低時&#xff0c;不恰當的索引對性能的影響可能還不明顯&#xff0c…

VS Code 遠程連接服務器:Anaconda 環境與 Python/Jupyter 運行全指南。研0大模型學習(第六、第七天)

VS Code 遠程連接服務器&#xff1a;Anaconda 環境與 Python/Jupyter 運行全指南 在使用 VS Code 通過 SSH 遠程連接到服務器進行開發時&#xff0c;尤其是在進行深度學習等需要特定環境的工作時&#xff0c;正確配置和使用 Anaconda 環境以及理解不同的代碼運行方式非常關鍵。…

字節頭條golang二面

docker和云服務的區別 首先明確Docker的核心功能是容器化&#xff0c;它通過容器技術將應用程序及其依賴項打包在一起&#xff0c;確保應用在不同環境中能夠一致地運行。而云服務則是由第三方提供商通過互聯網提供的計算資源&#xff0c;例如計算能力、存儲、數據庫等。云服務…

數據結構和算法(七)--樹

一、樹 樹是我們計算機中非常重要的一種數據結構&#xff0c;同時使用樹這種數據結構&#xff0c;可以描述現實生活中的很多事物&#xff0c;例如家譜、單位的組織架構、等等。 樹是由n(n>1)個有限結點組成一個具有層次關系的集合。把它叫做"樹"是因為它看起來像一…

狀態管理最佳實踐:Provider使用技巧與源碼分析

狀態管理最佳實踐&#xff1a;Provider使用技巧與源碼分析 前言 Provider是Flutter官方推薦的狀態管理解決方案&#xff0c;它簡單易用且功能強大。本文將從實戰角度深入講解Provider的使用技巧和源碼實現原理&#xff0c;幫助你更好地在項目中應用Provider進行狀態管理。 基…

使用 NEAT 進化智能體解決 Gymnasium 強化學習環境

使用 NEAT 進化智能體解決 Gymnasium 強化學習環境 0. 前言1. 環境定義2. 配置 NEAT3. 解決強化學習問題小結系列鏈接0. 前言 在本節中,我們使用 NEAT 解決經典強化學習 (reinforcement learning, RL) Gym 問題。但需要注意的是,我們用于推導網絡和解決方程的方法不是 RL,而…

Pandas高級功能

在數據科學與機器學習的廣闊天地中&#xff0c;Pandas宛如一把瑞士軍刀&#xff0c;以其強大的數據處理和分析能力&#xff0c;成為眾多數據從業者的得力助手。從基礎的數據讀寫、清洗到復雜的數據聚合、轉換&#xff0c;Pandas的功能豐富多樣。本文將深入探索Pandas的一些高級…

英語學習4.15

amateur amateur &#x1f524; 讀音&#xff1a;/?m?t?r/ 或 /?m?t??r/ ? 詞性&#xff1a;名詞 / 形容詞 ? 中文釋義&#xff1a; &#xff08;名詞&#xff09;業余愛好者 ??&#x1f449; 指不是以此為職業的人&#xff0c;通常出于興趣而從事某項活動。 ??…

Java開發軟件

Main.java // 主類&#xff0c;用于測試學生管理系統 public class Main { public static void main(String[] args) { StudentManagementSystem sms new StudentManagementSystem(); // 添加學生 sms.addStudent(new Student(1, "Alice", 20)…