国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

下一代MQ中間件,不來了解下?

開發(fā) 前端
該篇主要通過官網(wǎng)對Apache Pulsar做了簡單的了解與嘗試,同時基于SpringBoot,以簡單的示例代碼實現(xiàn)了消息的發(fā)送與接收,其中各個組件僅僅使用了默認的配置,在生產(chǎn)環(huán)境需要根據(jù)Pulsar的特性以及官方API使其具有擴展性與易用性。

哈嘍,大家好,我是指北君。

最近項目中準備使用消息中間件Apache Pulsar,借著機會先做個簡單了解吧。

Apache Pulsar

Apache Pulsar是Apache軟件基金會頂級項目,是下一代云原生分布式消息流平臺。

Pulsar 作為下一代云原生分布式消息流平臺,支持多租戶、持久化存儲、多機房跨區(qū)域數(shù)據(jù)復制,具有強一致性、高吞吐以及低延時的高可擴展流數(shù)據(jù)存儲特性, 內(nèi)置諸多其他系統(tǒng)商業(yè)版本才有的特性,是云原生時代解決實時消息流數(shù)據(jù)傳輸、存儲和計算的最佳解決方案。

圖片

Pulsar簡介

  • 系統(tǒng)架構

圖片

  • 功能特色
    租戶和命名空間(namespace)是 Pulsar 支持多租戶的兩個核心概念。在租戶級別,Pulsar 為特定的租戶預留合適的存儲空間、應用授權與認證機制。在命名空間級別,Pulsar 有一系列的配置策略(policy),包括存儲配額、流控、消息過期策略和命名空間之間的隔離策略。
    Pulsar 做了隊列模型和流模型的統(tǒng)一,在 Topic 級別只需保存一份數(shù)據(jù),同一份數(shù)據(jù)可多次消費。以流式、隊列等方式計算不同的訂閱模型大大提升了靈活度。
    Pulsar 使用計算與存儲分離的云原生架構,數(shù)據(jù)從 Broker 搬離,存在共享存儲內(nèi)部。上層是無狀態(tài) Broker,復制消息分發(fā)和服務;下層是持久化的存儲層 Bookie 集群。Pulsar 存儲是分片的,這種構架可以避免擴容時受限制,實現(xiàn)數(shù)據(jù)的獨立擴展和快速恢復。
    Pulsar 原生支持跨地域復制,因此 Pulsar 可以跨不同地理位置的數(shù)據(jù)中心復制數(shù)據(jù)。當數(shù)據(jù)中心中斷或網(wǎng)絡分區(qū)時,在多個數(shù)據(jù)中心存有消息副本尤為重要,提高可用性。
    Pulsar Functions 是基于 Pulsar 的輕量級流處理方式。Pulsar Functions 直接部署在 broker 節(jié)點上(或作為 Kubernetes 集群中的容器)。通過 Pulsar Functions,Pulsar 可以直接解決許多流處理任務,簡化操作。?
  • 支持客戶端

Java 客戶端

C++ 客戶端

.Net/C# 客戶端

Go 客戶端

NodeJS 客戶端

Ruby 客戶端

Pulsar安裝與部署

目前Pulsar不支持Window,下面通過Docker進行安裝,可以參考官網(wǎng)??https://pulsar.apache.org/docs/next/getting-started-docker/?

同時可以安裝Pulsar Manager,具體操作可以參考官方文檔 ??https://pulsar.apache.org/docs/next/administration-pulsar-manager/??

其中Pulsar Manager 是一個網(wǎng)頁式可視化管理與監(jiān)測工具,支持多環(huán)境下的動態(tài)配置。可用于管理和監(jiān)測租戶、命名空間、topic、訂閱、broker、集群等。

  1. window環(huán)境使用docker推薦使用Docker Desktop,和linux一樣可以通過docker命令管理鏡像、部署容器等操作。

打開并啟動Docker Desktop后,在終端執(zhí)行命令執(zhí)行 

_> docker search pulsar 

可以查詢到pulsar相關的鏡像

圖片

  1. 鏡像下載

這里我們選擇分別下載紅框的兩個鏡像,執(zhí)行命令 

_> docker pull apachepulsar/pulsar _> docker pull apachepulsar/pulsar-manager

  1. 啟動
  • 啟動Pulsar
docker run -it -p 6650:6650 -p 8080:8080 \
--mount source=pulsardata,target=/pulsar/data \
--mount source=pulsarconf,target=/pulsar/conf \
apachepulsar/pulsar bin/pulsar standalone
  • 啟動Pulsar Manager
docker run --name pulsar-manager -dit \
-p 9527:9527 -p 7750:7750 \
-e SPRING_CONFIGURATION_FILE=/pulsar-manager/pulsar-manager/application.properties \
apachepulsar/pulsar-manager

添加用戶:

for /f "tokens=1" %A in ('curl http://localhost:7750/pulsar-manager/csrf-token') do set CSRF_TOKEN=%A
curl -X PUT "X-XSRF-TOKEN: %CSRF_TOKEN%" -H "Cookie: XSRF-TOKEN=%CSRF_TOKEN%;"
-H "Content-Type: application/json" -d "{\"name\": \"admin\", \"password\": \"123456\", \"description\": \"super user admin\", \"email\": \"admin@test.com\"}"
"http://localhost:7750/pulsar-manager/users/superuser"

訪問:

http://localhost:9527/ 
用戶名密碼:admin/123456

配置environments:

這里需要保證Pulsar Manager應用服務能夠訪問到Pulsar應用,由于都是通過Docker部署,配置Service URL需要使用網(wǎng)絡IP,不要用localhost。

圖片

管理界面:

圖片

Pulsar與SpringBoot集成

  • springboot version : 2.3.7.RELEASE
  • pulsar client: 2.10.2
  1. 通過Properties簡單定義一些Broker相關的屬性
@Data
@ConfigurationProperties(prefix = "pulsar")
public class PulsarProperties {

private String cluster;

private String namespace;

private String serverUrl;

private String token;
}
  1. 通過配置定義了一些常用的組件,比如生產(chǎn)、消費工廠
@Configuration
@EnableConfigurationProperties({PulsarProperties.class})
public class PulsarBootstrapConfiguration {

private final PulsarProperties properties;

public PulsarBootstrapConfiguration(PulsarProperties properties) {
this.properties = properties;
}

@Bean(destroyMethod = "close")
public PulsarClient pulsarClient() throws PulsarClientException {
ClientBuilder clientBuilder = PulsarClient.builder().serviceUrl(properties.getServerUrl());
return clientBuilder.build();
}

@Bean
public PulsarProducerFactory pulsarProducerFactory() throws PulsarClientException {
return new PulsarProducerFactory(pulsarClient(), properties);
}

@Bean
public PulsarConsumerFactory pulsarConsumerFactory() throws PulsarClientException {
return new PulsarConsumerFactory(pulsarClient(), properties);
}

}
  1. 啟動服務,在服務啟動后,通過實現(xiàn)SmartInitializingSingleton接口,完成容器基本啟動(不包含Lazy的Bean)后,開始對消費者Consumer監(jiān)聽
@Slf4j
@SpringBootApplication
public class PulsarApplication implements SmartInitializingSingleton {

@Autowired
private PulsarConsumerFactory consumerFactory;

public static void main(String[] args) {
SpringApplication.run(PulsarApplication.class,args);
}

@Override
public void afterSingletonsInstantiated() {
startConsumerListener();
}

private void startConsumerListener(){
Consumer<String> consumer = createConsumer();
if( consumer != null ){
while (!Thread.currentThread().isInterrupted()){
CompletableFuture<? extends Message<?>> completableFuture = consumer.receiveAsync();
Message<?> message = null;
try {
message = completableFuture.get();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
log.error("錯誤",e);
} catch (ExecutionException e) {
log.error("錯誤",e);
}

if( message!=null ){
try {
log.info(" 接收消息:{} ", message.getValue() );
consumer.acknowledge(message);
} catch (PulsarClientException e) {
consumer.negativeAcknowledge(message);
throw new RuntimeException(e);
}
}
}
}
}

private Consumer<String> createConsumer() {
try {
return consumerFactory.getConsumer(Constants.TOPIC_DEMO);
} catch (PulsarClientException e) {
log.error("創(chuàng)建consumer出錯:{}", e.getMessage(),e);
}
return null;
}
}
  1. 消息發(fā)送測試
@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest
public class PulsarBootTests {

@Autowired
private PulsarProducerFactory producerFactory;

@Test
public void sendMessage() throws PulsarClientException {
Producer producer = producerFactory.getProducer(Constants.TOPIC_DEMO);

producer.send(" 測試消息: " + new Date());

producer.close();
}

}
  1. 檢查消息接收情況
2023-02-05 12:05:14.043  INFO 23472 --- [ulsar-timer-6-1] o.a.p.c.impl.ConsumerStatsRecorderImpl   : [TOPIC_DEMO] [sub-TOPIC_DEMO] [7c2b2] Prefetched messages: 0 --- Consume throughput received: 0.02 msgs/s --- 0.00 Mbit/s --- Ack sent rate: 0.02 ack/s --- Failed messages: 0 --- batch messages: 0 ---Failed acks: 0
2023-02-05 12:06:16.425 INFO 23472 --- [ main] com.sucl.pulsar.PulsarApplication : 接收消息: 測試消息: Sun Feb 05 12:06:16 CST 2023

結束語

該篇主要通過官網(wǎng)對Apache Pulsar做了簡單的了解與嘗試,同時基于SpringBoot,以簡單的示例代碼實現(xiàn)了消息的發(fā)送與接收,其中各個組件僅僅使用了默認的配置,在生產(chǎn)環(huán)境需要根據(jù)Pulsar的特性以及官方API使其具有擴展性與易用性。

責任編輯:武曉燕 來源: Java技術指北
相關推薦

2021-02-05 06:55:07

圖片壓縮AVIFWeb

2013-06-13 14:43:25

紅帽中間件JBoss

2013-07-27 21:28:44

2013-02-20 09:56:17

互聯(lián)網(wǎng)移動通信網(wǎng)絡IPv6

2019-04-30 14:59:27

Wi-FiWi-Fi 6Wi-Fi 5

2013-06-27 11:21:17

2025-01-03 09:24:10

模型架構論文

2020-09-16 10:28:54

邊緣計算云計算數(shù)據(jù)中心

2020-09-27 17:27:58

邊緣計算云計算技術

2023-10-24 07:50:18

消息中間件MQ

2023-06-29 10:10:06

Rocket MQ消息中間件

2025-08-05 06:00:00

CSS開發(fā)@scope

2013-09-09 16:28:36

2020-11-13 19:02:36

Jamstack技術棧網(wǎng)站

2016-01-26 11:58:12

2013-04-25 13:21:30

2012-12-10 16:15:43

下一代防火墻NGWF

2023-04-28 10:02:50

2021-05-22 23:01:21

人工智能網(wǎng)絡安全

2013-05-10 09:36:04

下一代網(wǎng)絡銳捷網(wǎng)絡簡網(wǎng)絡
點贊
收藏

51CTO技術棧公眾號

精品视频久久| 国产精品传媒| 欧美黑人又粗又大又爽免费| 国产精品av在线| 亚洲大尺度美女在线| 一区二区三区在线观看动漫| 久久成人免费电影| 国产成人手机高清在线观看网站| 色一区二区三区| 四虎影视在线观看2413| 亚洲国产精品久久久久婷蜜芽| av成人免费观看| 国语自产精品视频在免费| 欧美mv日韩mv| 亚洲一二三四久久| 92精品国产成人观看免费| 狠狠噜噜久久| 欧美日韩一本| 日韩成人亚洲| 国产一二区在线| 美女被人操视频在线观看| 日本日本19xxxⅹhd乱影响| 欧美激情www| 国产精品丝袜白浆摸在线| 精品国内自产拍在线观看| 日韩视频免费观看高清完整版 | 午夜精品在线观看| 亚洲成色777777女色窝| 狠狠干狠狠久久| 国产精品污www在线观看| 国产美女一区二区| 午夜在线播放视频欧美| 天天超碰亚洲| 免费看成人吃奶视频在线| 91国产一区| 女生影院久久| 菠萝蜜视频在线观看www入口| 色综合成人av| 国产精品三级a三级三级午夜 | 欧美aaaaaa午夜精品| 午夜精品毛片| 伊人久久综合影院| 欧美精品三级在线| 在线观看欧美日韩电影| av黄色在线| h视频在线免费| 小草在线视频在线免费视频| jlzzjlzz欧美大全| 亚洲综合色在线观看| heyzo国产| 日韩亚洲欧美一区二区| 亚洲国产欧美不卡在线观看| 裸模一区二区三区免费| 99国精产品一二二线| 成人欧美一区二区三区黑人孕妇| 国产aaa精品| 日本欧美中文字幕| 青青久久av北条麻妃海外网| 久久久久国产一区二区三区| 久久最新资源网| 久久精品亚洲94久久精品| 中文字幕日韩欧美精品在线观看| 亚洲视频axxx| 伊人激情综合网| 一区二区欧美亚洲| 视频在线观看99| 久久天天躁狠狠躁老女人| 久久精品中文字幕电影| 久久久成人精品视频| 久久久精品视频成人| 久久偷看各类女兵18女厕嘘嘘| 久久久成人av| 久久久久成人网| 欧美一性一乱一交一视频| 青青草99啪国产免费| 国产精品久久久久久中文字| 国产精品视频自在线| 91色琪琪电影亚洲精品久久| 3d精品h动漫啪啪一区二区| 99免费在线视频观看| 久久99精品久久久久子伦| 国产美女精品在线观看| 久久久久久九九九九| 亚洲成人在线视频网站| 三级在线免费观看| 国产免费观看高清视频| 中文字幕在线导航| 日本fc2在线观看| 青青草视频免费在线观看| √天堂资源地址在线官网| sm国产在线调教视频| 在线观看爽视频| 99精品美女视频在线观看热舞| 婷婷视频一区二区三区| 久操国产精品| 亚洲小说欧美另类社区| 免费观看一级特黄欧美大片| 国产成人精品www牛牛影视| 久久久国产午夜精品| 夜夜精品浪潮av一区二区三区| 懂色av一区二区三区| 欧美猛男超大videosgay| 精品国产一区二区三区av性色| 亚洲人成亚洲人成在线观看| 欧美肥臀大乳一区二区免费视频| 国产精品av网站| 国产精品久久久久久免费观看 | 久艹在线免费观看| 久久99999| 色久视频在线播放| 色yeye免费人成网站在线观看| 成人性生交大片免费网站| 日本一区精品视频| 国产精品精品| 日本麻豆一区二区三区视频| 91热门视频在线观看| 亚洲国产精品尤物yw在线观看| 在线不卡免费av| 中文字幕亚洲激情| 国产999精品久久久影片官网| 国产伦精品一区二区三区视频孕妇| 色乱码一区二区三在线看| 日本久久久精品视频| 无人视频在线观看免费| 不卡av免费观看| 成人知道污网站| 在线日韩中文| 99久久精品久久久久久清纯| 亚洲无人区一区| 欧美精品一区二区三区一线天视频| 美女福利视频一区| 91综合免费在线| 黄色成人在线免费观看| 日本视频一二区| 国产盗摄精品一区二区酒店| 亚洲免费一区三区| 中文字幕人成人乱码| 国产精品一区二区你懂的| 依依成人综合视频| 亚洲国产一区自拍| 国产成人精品a视频一区www| 欧美一区二区视频在线| 在线免费视频a| 黄a在线观看| 精品精品精品| 美日韩一区二区三区| 亚洲乱码国产乱码精品精可以看 | 免费在线黄色网址| 韩日精品一区| 久久久久美女| av中文字幕在线不卡| 欧美性生交大片免网| 色偷偷av一区二区三区| 97久久人人超碰caoprom欧美| 日本男女交配视频| 九色在线免费| 伊人久久大香线蕉av超碰| 国产精品一页| 亚洲免费观看高清完整版在线| 亚洲国产婷婷香蕉久久久久久| 日本久久久久久久| 国产精品视频二| 99青草视频在线播放视| 99国产精品免费网站| 青青国产91久久久久久| 亚洲综合色自拍一区| 在线视频日韩精品| 国产一区免费| 99精产国品一二三产品香蕉| 蜜桃视频m3u8在线观看| 五月精品视频| 国产欧美日韩久久| 日韩av综合网站| av在线不卡一区| jizzjizzjizz亚洲| 自拍偷自拍亚洲精品被多人伦好爽| 91精品啪在线观看国产18| 久久久久久久久久久电影| 日韩精品一区国产麻豆| 国产精品www色诱视频| 黄页免费在线观看视频| 在线日本视频| 成人3d精品动漫精品一二三| 91香蕉视频在线| 亚洲国产小视频| 精品免费国产| 亚洲夫妻av| 极品束缚调教一区二区网站| 国产一区二区三区不卡在线观看| 欧美综合一区二区三区| 国产91色在线免费| 国产xxxxx视频| 搜成人激情视频| 日韩激情av在线| 欧美中文一区二区三区| 国产精品国产三级国产aⅴ9色| 青青在线免费观看视频| 日韩一区二区三区免费视频| 秋霞午夜av一区二区三区| 欧美视频在线观看一区二区|