最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Spring Boot對 Apache Pulsar的支持

 更新時(shí)間:2024年11月07日 14:47:43   作者:聽海邊濤聲  
Spring Boot通過提供spring-pulsar和spring-pulsar-reactive自動(dòng)配置支持Apache Pulsar,類路徑中這些依賴存在時(shí),Spring Boot自動(dòng)配置命令式和反應(yīng)式Pulsar組件,PulsarClient自動(dòng)注冊,默認(rèn)連接本地Pulsar實(shí)例,感興趣的朋友一起看看吧

https://docs.spring.io/spring-boot/docs/3.2.0/reference/htmlsingle/#messaging.pulsar

Apache Pulsar 通過提供 Spring for Apache Pulsar 項(xiàng)目的自動(dòng)配置而受到支持。

當(dāng)類路徑中存在 org.springframework.pulsar:spring-pulsar 時(shí),Spring Boot 將自動(dòng)配置并注冊經(jīng)典的(命令式)Spring for Apache Pulsar 組件。當(dāng)類路徑中存在 org.springframework.pulsar:spring-pulsar-reactive 時(shí),Spring Boot 也會對反應(yīng)式組件執(zhí)行相同的操作。

分別有適用于命令式和反應(yīng)式使用的 spring-boot-starter-pulsarspring-boot-starter-pulsar-reactive “Starters”,可方便地收集依賴項(xiàng)。

連接到Pulsar

當(dāng)使用 Pulsar 啟動(dòng)器時(shí),Spring Boot 將自動(dòng)配置并注冊一個(gè) PulsarClient bean。

默認(rèn)情況下,應(yīng)用程序嘗試連接到位于 pulsar://localhost:6650 的本地 Pulsar 實(shí)例。這可以通過將 spring.pulsar.client.service-url 屬性設(shè)置為不同的值來進(jìn)行調(diào)整。
注意:該值必須是有效的 Pulsar 協(xié)議 URL。

可以通過指定任何以 spring.pulsar.client.* 開頭的應(yīng)用程序?qū)傩詠砼渲每蛻舳恕?/p>

如果需要更多控制權(quán)來配置 PulsarClient,請考慮注冊一個(gè)或多個(gè) PulsarClientBuilderCustomizer bean。

認(rèn)證(Authentication)

要連接到需要認(rèn)證的 Pulsar 集群,需要指定要使用哪個(gè)認(rèn)證插件,通過設(shè)置 pluginClassName 和插件所需的任何參數(shù)??梢詫?shù)設(shè)置為參數(shù)名稱到參數(shù)值的映射。以下示例顯示了如何配置 AuthenticationOAuth2 插件。

spring.pulsar.client.authentication.plugin-class-name=org.apache.pulsar.client.impl.auth.oauth2.AuthenticationOAuth2
spring.pulsar.client.authentication.param[issuerUrl]=https://auth.server.cloud/
spring.pulsar.client.authentication.param[privateKey]=file:///Users/some-key.json
spring.pulsar.client.authentication.param.audience=urn:sn:acme:dev:my-instance

注意
需要確保在 spring.pulsar.client.authentication.param.* 下定義的名稱與認(rèn)證插件所期望的名稱完全匹配(通常是駝峰命名法)。Spring Boot 不會嘗試對這些條目進(jìn)行任何形式的寬松綁定。

例如,如果想為 AuthenticationOAuth2 認(rèn)證插件配置issuer URL,則必須使用 spring.pulsar.client.authentication.param.issuerUrl。如果使用其他形式,如 issuerurlissuer-url,則設(shè)置將不會應(yīng)用于插件。

SSL

默認(rèn)情況下,Pulsar客戶端以明文形式與Pulsar服務(wù)進(jìn)行通信。以下部分描述了如何配置Pulsar客戶端以使用TLS加密(SSL)。一個(gè)先決條件是Broker也已經(jīng)配置為使用TLS加密。

Spring Boot自動(dòng)配置目前不支持任何TLS/SSL配置屬性。相反,你可以提供一個(gè)PulsarClientBuilderCustomizer,該定制器會在Pulsar客戶端構(gòu)建器上設(shè)置必要的屬性。Pulsar支持Privacy Enhanced Mail(PEM)和Java KeyStore(JKS)兩種證書格式。

按照以下步驟配置TLS:

  • 調(diào)整Pulsar客戶端服務(wù)URL以使用pulsar+ssl:// scheme 和TLS端口(通常為6651)。
  • 調(diào)整管理客戶端服務(wù)URL以使用https://scheme 和TLS Web端口(通常為8443)。
  • 提供客戶端構(gòu)建器定制器,該定制器會在構(gòu)建器上設(shè)置相關(guān)屬性。

以響應(yīng)式方式連接到Pulsar

當(dāng)Reactive自動(dòng)配置被激活時(shí),Spring Boot將自動(dòng)配置并注冊一個(gè)ReactivePulsarClient bean。

連接到Pulsar管理界面

Spring for Apache Pulsar的PulsarAdministration客戶端也實(shí)現(xiàn)了自動(dòng)配置。

默認(rèn)情況下,應(yīng)用程序嘗試連接到位于http://localhost:8080的本地Pulsar實(shí)例??梢酝ㄟ^將spring.pulsar.admin.service-url屬性設(shè)置為(http|https)://<host>:<port>的不同值來調(diào)整此設(shè)置。

如果需要更多控制權(quán)來配置PulsarAdmin,請考慮注冊一個(gè)或多個(gè)PulsarAdminBuilderCustomizer bean。

認(rèn)證

當(dāng)訪問需要身份驗(yàn)證的Pulsar集群時(shí),管理客戶端需要與普通Pulsar客戶端相同的安全配置。可以通過將spring.pulsar.client.authentication替換為spring.pulsar.admin.authentication來使用上述身份驗(yàn)證配置。

提示:在啟動(dòng)時(shí)創(chuàng)建主題,請?zhí)砑右粋€(gè)類型為PulsarTopic的bean。如果主題已經(jīng)存在,則該bean將被忽略。

發(fā)送消息

Spring的PulsarTemplate實(shí)現(xiàn)了自動(dòng)配置,可以使用它來發(fā)送消息,如下所示:

import org.apache.pulsar.client.api.PulsarClientException;
import org.springframework.pulsar.core.PulsarTemplate;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
    private final PulsarTemplate<String> pulsarTemplate;
    public MyBean(PulsarTemplate<String> pulsarTemplate) {
        this.pulsarTemplate = pulsarTemplate;
    }
    public void someMethod() throws PulsarClientException {
        this.pulsarTemplate.send("someTopic", "Hello");
    }
}

PulsarTemplate依賴于PulsarProducerFactory來創(chuàng)建底層的Pulsar生產(chǎn)者。Spring Boot的自動(dòng)配置也提供了這個(gè)生產(chǎn)者工廠,默認(rèn)情況下,它會緩存所創(chuàng)建的生產(chǎn)者。你可以通過指定任何以spring.pulsar.producer.*spring.pulsar.producer.cache.* 為前綴的應(yīng)用屬性來配置生產(chǎn)者工廠和緩存設(shè)置。

如果你需要對生產(chǎn)者工廠的配置進(jìn)行更多的控制,考慮注冊一個(gè)或多個(gè)ProducerBuilderCustomizer bean。這些定制器會應(yīng)用于所有創(chuàng)建的生產(chǎn)者。你也可以在發(fā)送消息時(shí)傳入一個(gè)ProducerBuilderCustomizer,只影響當(dāng)前的生產(chǎn)者。

如果你需要對正在發(fā)送的消息進(jìn)行更多的控制,你可以在發(fā)送消息時(shí)傳入一個(gè)TypedMessageBuilderCustomizer

以響應(yīng)式方式發(fā)送消息

當(dāng)Reactive自動(dòng)配置被激活時(shí),Spring的ReactivePulsarTemplate也會實(shí)現(xiàn)自動(dòng)配置,可以使用它來發(fā)送消息,如下所示:

import org.springframework.pulsar.reactive.core.ReactivePulsarTemplate;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
    private final ReactivePulsarTemplate<String> pulsarTemplate;
    public MyBean(ReactivePulsarTemplate<String> pulsarTemplate) {
        this.pulsarTemplate = pulsarTemplate;
    }
    public void someMethod() {
        this.pulsarTemplate.send("someTopic", "Hello").subscribe();
    }
}

ReactivePulsarTemplate依賴于ReactivePulsarSenderFactory來實(shí)際創(chuàng)建底層的發(fā)送器。Spring Boot的自動(dòng)配置也提供了這個(gè)發(fā)送器工廠,默認(rèn)情況下,它會緩存所創(chuàng)建的發(fā)送器。你可以通過指定任何以spring.pulsar.producer.*spring.pulsar.producer.cache.* 為前綴的應(yīng)用屬性來配置發(fā)送器工廠和緩存設(shè)置。

如果你需要對發(fā)送器工廠的配置進(jìn)行更多的控制,考慮注冊一個(gè)或多個(gè)ReactiveMessageSenderBuilderCustomizer bean。這些定制器會應(yīng)用于所有創(chuàng)建的發(fā)送器。你也可以在發(fā)送消息時(shí)傳入一個(gè)ReactiveMessageSenderBuilderCustomizer,只影響當(dāng)前的發(fā)送器。

如果你需要對正在發(fā)送的消息進(jìn)行更多的控制,你可以在發(fā)送消息時(shí)傳入一個(gè)MessageSpecBuilderCustomizer。

接收消息

當(dāng)存在Apache Pulsar基礎(chǔ)設(shè)施時(shí),任何bean都可以通過添加@PulsarListener注解來創(chuàng)建監(jiān)聽器端點(diǎn)。以下組件在someTopic主題上創(chuàng)建了一個(gè)監(jiān)聽器端點(diǎn):

import org.springframework.pulsar.annotation.PulsarListener;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
    @PulsarListener(topics = "someTopic")
    public void processMessage(String content) {
        // ...
    }
}

Spring Boot的自動(dòng)配置為PulsarListener提供了所有必要的組件,如PulsarListenerContainerFactory和用于構(gòu)建底層Pulsar消費(fèi)者的消費(fèi)者工廠。你可以通過指定任何以spring.pulsar.listener.*spring.pulsar.consumer.*為前綴的應(yīng)用屬性來配置這些組件。

如果你需要對消費(fèi)者工廠的配置進(jìn)行更多的控制,考慮注冊一個(gè)或多個(gè)ConsumerBuilderCustomizer bean。這些定制器會應(yīng)用于工廠創(chuàng)建的所有消費(fèi)者,因此適用于所有@PulsarListener實(shí)例。你還可以通過設(shè)置@PulsarListener注解的consumerCustomizer屬性來定制單個(gè)監(jiān)聽器。

以響應(yīng)式方式接收消息

當(dāng)存在Apache Pulsar基礎(chǔ)設(shè)施且Reactive自動(dòng)配置被激活時(shí),任何bean都可以通過添加@ReactivePulsarListener注解來創(chuàng)建響應(yīng)式監(jiān)聽器端點(diǎn)。以下組件在someTopic主題上創(chuàng)建了一個(gè)響應(yīng)式監(jiān)聽器端點(diǎn):

import reactor.core.publisher.Mono;
import org.springframework.pulsar.reactive.config.annotation.ReactivePulsarListener;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
    @ReactivePulsarListener(topics = "someTopic")
    public Mono<Void> processMessage(String content) {
        // ...
        return Mono.empty();
    }
}

Spring Boot的自動(dòng)配置為ReactivePulsarListener提供了所有必要的組件,如ReactivePulsarListenerContainerFactory和用于構(gòu)建底層響應(yīng)式Pulsar消費(fèi)者的消費(fèi)者工廠。你可以通過指定任何以spring.pulsar.listener.spring.pulsar.consumer.為前綴的應(yīng)用屬性來配置這些組件。

如果你需要對消費(fèi)者工廠的配置進(jìn)行更多的控制,考慮注冊一個(gè)或多個(gè)ReactiveMessageConsumerBuilderCustomizer bean。這些定制器會應(yīng)用于工廠創(chuàng)建的所有消費(fèi)者,因此適用于所有@ReactivePulsarListener實(shí)例。你還可以通過設(shè)置@ReactivePulsarListener注解的consumerCustomizer屬性來定制單個(gè)監(jiān)聽器。

讀取消息

Pulsar的讀取器接口使應(yīng)用程序能夠手動(dòng)管理游標(biāo)。當(dāng)你使用讀取器連接到主題時(shí),你需要指定當(dāng)讀取器連接到主題時(shí)從哪個(gè)消息開始讀取。

當(dāng)存在Apache Pulsar基礎(chǔ)設(shè)施時(shí),任何bean都可以通過添加@PulsarReader注解來使用讀取器消費(fèi)消息。以下組件創(chuàng)建了一個(gè)讀取器端點(diǎn),該端點(diǎn)從someTopic主題的開頭開始讀取消息:

import org.springframework.pulsar.annotation.PulsarReader;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
    @PulsarReader(topics = "someTopic", startMessageId = "earliest")
    public void processMessage(String content) {
        // ...
    }
}

@PulsarReader依賴于PulsarReaderFactory來創(chuàng)建底層的Pulsar讀取器。Spring Boot的自動(dòng)配置提供了這個(gè)讀取器工廠,可以通過設(shè)置任何以spring.pulsar.reader.*為前綴的應(yīng)用屬性來定制它。

如果你需要對讀取器工廠的配置進(jìn)行更多的控制,考慮注冊一個(gè)或多個(gè)ReaderBuilderCustomizer bean。這些定制器會應(yīng)用于工廠創(chuàng)建的所有讀取器,因此適用于所有@PulsarReader實(shí)例。你還可以通過設(shè)置@PulsarReader注解的readerCustomizer屬性來定制單個(gè)監(jiān)聽器。

以響應(yīng)式方式讀取消息

當(dāng)存在Apache Pulsar基礎(chǔ)設(shè)施且Reactive自動(dòng)配置被激活時(shí),Spring會提供ReactivePulsarReaderFactory,你可以使用它來創(chuàng)建讀取器,以響應(yīng)式的方式讀取消息。以下組件使用提供的工廠創(chuàng)建一個(gè)讀取器,并從someTopic主題中讀取5秒鐘前的一條消息:

import java.time.Instant;
import java.util.List;
import org.apache.pulsar.client.api.Message;
import org.apache.pulsar.client.api.Schema;
import org.apache.pulsar.reactive.client.api.StartAtSpec;
import reactor.core.publisher.Mono;
import org.springframework.pulsar.reactive.core.ReactiveMessageReaderBuilderCustomizer;
import org.springframework.pulsar.reactive.core.ReactivePulsarReaderFactory;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
    private final ReactivePulsarReaderFactory<String> pulsarReaderFactory;
    public MyBean(ReactivePulsarReaderFactory<String> pulsarReaderFactory) {
        this.pulsarReaderFactory = pulsarReaderFactory;
    }
    public void someMethod() {
        ReactiveMessageReaderBuilderCustomizer<String> readerBuilderCustomizer = (readerBuilder) -> readerBuilder
            .topic("someTopic")
            .startAtSpec(StartAtSpec.ofInstant(Instant.now().minusSeconds(5)));
        Mono<Message<String>> message = this.pulsarReaderFactory
            .createReader(Schema.STRING, List.of(readerBuilderCustomizer))
            .readOne();
        // ...
    }
}

Spring Boot的自動(dòng)配置提供了這個(gè)讀取器工廠,可以通過設(shè)置任何以spring.pulsar.reader.*為前綴的應(yīng)用屬性來定制它。

如果你需要對讀取器工廠的配置進(jìn)行更多的控制,當(dāng)使用工廠創(chuàng)建讀取器時(shí),考慮傳入一個(gè)或多個(gè)ReactiveMessageReaderBuilderCustomizer實(shí)例。

如果你需要對讀取器工廠的配置進(jìn)行更多的控制,考慮注冊一個(gè)或多個(gè)ReactiveMessageReaderBuilderCustomizer bean。這些定制器會應(yīng)用于所有創(chuàng)建的讀取器。你也可以在創(chuàng)建讀取器時(shí)傳入一個(gè)或多個(gè)ReactiveMessageReaderBuilderCustomizer,只將定制應(yīng)用于創(chuàng)建的讀取器。

額外的Pulsar屬性

只有Pulsar支持的屬性子集才能直接通過PulsarProperties類使用。如果你希望使用額外的屬性來調(diào)整自動(dòng)配置的組件,而這些屬性不被直接支持,你可以使用前面提到的每個(gè)組件支持的定制器。

到此這篇關(guān)于詳解Spring Boot對 Apache Pulsar的支持的文章就介紹到這了,更多相關(guān)Spring Boot Apache Pulsar內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • IDEA?隱藏DEBUG日志的解決方法

    IDEA?隱藏DEBUG日志的解決方法

    IDEA?打印太多的DEBUG日志,看起來很煩,有沒有辦法隱藏日志,網(wǎng)上找了一圈,沒有誰寫的靠譜的,下面小編給大家分享下IDEA?如何隱藏DEBUG日志,需要的朋友可以參考下
    2022-09-09
  • Java中的CountDownLatch多方面深入解析

    Java中的CountDownLatch多方面深入解析

    CountDownLatch是Java中的一個(gè)并發(fā)工具類,它可以用于控制多個(gè)線程的并發(fā)執(zhí)行流程,這篇文章主要介紹了Java中的CountDownLatch的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-08-08
  • Java實(shí)現(xiàn)郵件發(fā)送的過程及代碼詳解

    Java實(shí)現(xiàn)郵件發(fā)送的過程及代碼詳解

    這篇文章主要介紹了Java實(shí)現(xiàn)郵件發(fā)送的過程及代碼詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Java實(shí)現(xiàn)鼠標(biāo)拖放功能的方法

    Java實(shí)現(xiàn)鼠標(biāo)拖放功能的方法

    這篇文章主要介紹了Java實(shí)現(xiàn)鼠標(biāo)拖放功能的方法,很實(shí)用的功能,需要的朋友可以參考下
    2014-07-07
  • Spring單數(shù)據(jù)源的配置詳解

    Spring單數(shù)據(jù)源的配置詳解

    spring數(shù)據(jù)源的配置網(wǎng)絡(luò)上有很多例子,這里我也來介紹一下單數(shù)據(jù)源配置的例子,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • SpringBoot?替換?if?的參數(shù)校驗(yàn)示例代碼

    SpringBoot?替換?if?的參數(shù)校驗(yàn)示例代碼

    Spring?Validation是對hibernate?validation的二次封裝,用于支持spring?mvc參數(shù)自動(dòng)校驗(yàn),接下來,我們以spring-boot項(xiàng)目為例,介紹Spring?Validation的使用,需要的朋友可以參考下
    2022-12-12
  • Spring @value和@PropertySource注解使用方法解析

    Spring @value和@PropertySource注解使用方法解析

    這篇文章主要介紹了Spring @value和@PropertySource注解使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • SpringCloud Feign傳遞HttpServletRequest對象流程

    SpringCloud Feign傳遞HttpServletRequest對象流程

    HttpServletRequest接口的對象代表客戶端的請求,當(dāng)客戶端通過HTTP協(xié)議訪問Tomcat服務(wù)器時(shí),HTTP請求中的所有信息都封裝在HttpServletRequest接口的對象中,這篇文章介紹了Feign傳遞HttpServletRequest對象的流程,感興趣的同學(xué)可以參考下文
    2023-05-05
  • SpringCloud?Bus組件的使用配置詳解

    SpringCloud?Bus組件的使用配置詳解

    bus稱之為springcloud中消息總線,主要用來在微服務(wù)系統(tǒng)中實(shí)現(xiàn)遠(yuǎn)端配置更新時(shí)通過廣播形式通知所有客戶端刷新配置信息,避免手動(dòng)重啟服務(wù)的工作,這篇文章主要介紹了SpringCloud?Bus組件的使用,需要的朋友可以參考下
    2022-03-03
  • Java數(shù)據(jù)類型之引用數(shù)據(jù)類型解讀

    Java數(shù)據(jù)類型之引用數(shù)據(jù)類型解讀

    這篇文章主要介紹了Java數(shù)據(jù)類型之引用數(shù)據(jù)類型,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07

最新評論

临泉县| 黄陵县| 清新县| 疏勒县| 泸西县| 扎兰屯市| 明水县| 洛南县| 禹城市| 塘沽区| 普兰店市| 绵竹市| 石林| 清水河县| 武定县| 平泉县| 鄱阳县| 江川县| 安国市| 政和县| 柯坪县| 灵台县| 临泉县| 遂昌县| 米易县| 咸丰县| 潜江市| 蓝山县| 泉州市| 即墨市| 上饶市| 德惠市| 金昌市| 宁阳县| 万全县| 通江县| 高淳县| 马公市| 金阳县| 虎林市| 城口县|