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

springboot使用kafka推送數(shù)據(jù)到服務(wù)端的操作方法帶認(rèn)證

 更新時(shí)間:2024年11月06日 10:22:29   作者:Alina_shu  
在使用Kafka進(jìn)行數(shù)據(jù)推送時(shí),遇到認(rèn)證問(wèn)題導(dǎo)致連接失敗,本文詳細(xì)介紹了Kafka的認(rèn)證配置過(guò)程,包括配置文件的引入和參數(shù)設(shè)置,實(shí)際測(cè)試表明,需要正確配置sasl.jaas.config以及其他認(rèn)證參數(shù),探討了配置文件是否可以同時(shí)存在多個(gè)配置塊的可能性,并提出了實(shí)際操作中的注意事項(xiàng)

遇到的問(wèn)題

在實(shí)際開(kāi)發(fā)過(guò)程中,因?yàn)橥扑蛿?shù)據(jù)需要用到kafka,為了比較方便與后續(xù)其他需求需要使用kafka,所以開(kāi)發(fā)的過(guò)程中是設(shè)想能寫(xiě)一個(gè)工具類,方便后續(xù)的使用,但是,測(cè)試不帶認(rèn)證的kafka服務(wù)端的時(shí)候,發(fā)送是正常的,但是實(shí)際情況是,對(duì)方的服務(wù)器需要認(rèn)證,導(dǎo)致遇到連不上對(duì)方服務(wù),推送失敗的問(wèn)題,需要找對(duì)方確認(rèn)對(duì)方的認(rèn)證配置信息。并且在查詢?cè)趺刺幚淼臅r(shí)候,驗(yàn)證也出現(xiàn)了比較奇葩的情況,那本次文章就簡(jiǎn)單寫(xiě)遇到的問(wèn)題和驗(yàn)證結(jié)果。

碰到的天坑

1.度的時(shí)候,總是說(shuō)引入了配置文件就完事,其他的配置不需要再配sasl.jaas.config,但是我實(shí)際測(cè)試下來(lái)不行啊。還是得引入配置文件+配置參數(shù)設(shè)置。
2.第二個(gè)基于未來(lái)思考的問(wèn)題是,這個(gè)引入的配置文件內(nèi)容,是否可以多個(gè)。據(jù)度來(lái)度去的結(jié)果說(shuō)是可以的,按順序會(huì)去逐一匹配直到匹配成功,那就是下面配置的KafkaClient配置塊是可以多個(gè),就名稱不一樣就行。但是礙于條件限制,沒(méi)試過(guò)。??

處理步驟

加載配置
度了很多文章,都提到了需要在服務(wù)啟動(dòng)的時(shí)候引入認(rèn)證配置文件,設(shè)置屬性 java.security.auth.login.config,度了一下是有兩種方式。
a). 在服務(wù)啟動(dòng)的時(shí)候用參數(shù)引入,命令如下:
java -Djava.security.auth.login.config=(具體地址自己填,因?yàn)槲遗渲梦募歉鷗est.jar同級(jí)目錄所以無(wú)前綴)kafka_jaas_config.config -jar test.jar
b). 在代碼中去引入,如:(這方式我是沒(méi)試的)
System.setProperty(“java.security.auth.login.config”, “kafka_jaas_config.config”);

c). 配置文件的內(nèi)容(注意password后面那個(gè)該死的分號(hào)是要的,配置參數(shù)設(shè)置的時(shí)候也是要的)

KafkaClient {  
    org.apache.kafka.common.security.scram.ScramLoginModule required  
    username="user"  
    password="123";  
};

設(shè)置認(rèn)證參數(shù)(如果有的話)
類似要填的參數(shù)是:
security.protocol,sasl.mechanism,sasl.jaas.config(,sasl.username和sasl.password,這兩個(gè)我看是高版本直接配置據(jù)說(shuō)能認(rèn)證,不需要sasl.jaas.config,但是低版本是需要sasl.jaas.config,所以建議是可以都配上)
such as :

props.put("sasl.jaas.config", "org.apache.kafka.common.security.scram.ScramLoginModule required username=\"user\" password=\"123\";");

工具類 

package platform.cars.utils;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.common.serialization.StringSerializer;
import org.springframework.context.annotation.Configuration;
import org.springframework.kafka.core.DefaultKafkaProducerFactory;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.kafka.core.ProducerFactory;
import org.springframework.retry.annotation.Backoff;
import org.springframework.retry.annotation.Retryable;
import javax.annotation.PreDestroy;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
 * @Auther: Ms.y
 */
@Configuration
public class KafkaUtil {
    private static final ConcurrentHashMap<String, KafkaTemplate<String, String>> templateCache = new ConcurrentHashMap<>();
    private Map<String, Object> kafkaProducerConfigs(String servers, Map<String, Object> otherConfigs) {
        Map<String, Object> props = new HashMap<>();
        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, servers);
        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
        if (otherConfigs != null){
            otherConfigs.forEach(props::put);
        }
        return props;
    }
    public KafkaTemplate<String, String> getKafkaTemplate(String servers, Map<String, Object> otherConfigs) {
        return templateCache.computeIfAbsent(servers, bs -> createKafkaTemplate(bs, otherConfigs));
    }
    private KafkaTemplate<String, String> createKafkaTemplate(String servers, Map<String, Object> otherConfigs) {
        Map<String, Object> configs = kafkaProducerConfigs(servers, otherConfigs);
        ProducerFactory<String, String> producerFactory = new DefaultKafkaProducerFactory<>(configs);
        return new KafkaTemplate<>(producerFactory);
    }
    @PreDestroy
    public void destroy() {
        for (KafkaTemplate<String, String> template : templateCache.values()) {
            template.destroy();
        }
    }
}

怎么用

1.正常的autowired就行
2.自己查配置還有是否需要認(rèn)證的信息
3.獲取template去發(fā)送數(shù)據(jù)
4.處理結(jié)果

Map<String,Object> configs = new HashMap<>();
//自己給configs 填值
KafkaTemplate kafkaTemplate = kafkaUtil.getKafkaTemplate("ip:port",configs);
kafkaTemplate.send("topic名稱", "消息內(nèi)容");

廢話

我這是因?yàn)闉榱朔奖慵恿藗€(gè)緩存隊(duì)列,存儲(chǔ)了kafka已經(jīng)連過(guò)的服務(wù),不需要的話完全可以自己改造去掉這部分。如果有可以精進(jìn)的問(wèn)題可以提啊,歡迎挑刺。

到此這篇關(guān)于springboot使用kafka推送數(shù)據(jù)到服務(wù)端,帶認(rèn)證的文章就介紹到這了,更多相關(guān)springboot kafka推送數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 簡(jiǎn)單快速對(duì)@RequestParam聲明的參數(shù)作校驗(yàn)操作

    簡(jiǎn)單快速對(duì)@RequestParam聲明的參數(shù)作校驗(yàn)操作

    這篇文章主要介紹了簡(jiǎn)單快速對(duì)@RequestParam聲明的參數(shù)作校驗(yàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 教你使用java將excel數(shù)據(jù)導(dǎo)入MySQL

    教你使用java將excel數(shù)據(jù)導(dǎo)入MySQL

    今天教大家如何使用Java將excel數(shù)據(jù)導(dǎo)入MySQL,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴呢很有幫助,需要的朋友可以參考下
    2021-05-05
  • Java實(shí)現(xiàn)簡(jiǎn)單的掃雷圖

    Java實(shí)現(xiàn)簡(jiǎn)單的掃雷圖

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單的掃雷圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Maven編譯遇到Process terminated問(wèn)題(四種情況全部解決)

    Maven編譯遇到Process terminated問(wèn)題(四種情況全部解決)

    這篇文章主要介紹了Maven編譯遇到Process terminated問(wèn)題(四種情況全部解決),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Spring底層原理由淺入深探究

    Spring底層原理由淺入深探究

    Spring事務(wù)有可能會(huì)提交,回滾、掛起、恢復(fù),所以Spring事務(wù)提供了一種機(jī)制,可以讓程序員來(lái)監(jiān)聽(tīng)當(dāng)前Spring事務(wù)所處于的狀態(tài),這篇文章主要介紹了Spring底層事務(wù)原理,需要的朋友可以參考下
    2023-02-02
  • Java Collections.shuffle()方法案例詳解

    Java Collections.shuffle()方法案例詳解

    這篇文章主要介紹了Java Collections.shuffle()方法案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Spring Core核心類庫(kù)的功能與應(yīng)用實(shí)踐分析

    Spring Core核心類庫(kù)的功能與應(yīng)用實(shí)踐分析

    本文詳細(xì)介紹了SpringCore核心類庫(kù)的功能、應(yīng)用實(shí)踐和底層原理,SpringCore提供了控制反轉(zhuǎn)(IOC)、依賴注入(DI)、Bean管理以及JNDI、定時(shí)任務(wù)等企業(yè)級(jí)功能,文章通過(guò)多個(gè)Java示例展示了SpringCore的應(yīng)用,感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • Springboot與vue實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出方法具體介紹

    Springboot與vue實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出方法具體介紹

    這篇文章主要介紹了Springboot與vue實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-02-02
  • Java實(shí)現(xiàn)雙向鏈表(兩個(gè)版本)

    Java實(shí)現(xiàn)雙向鏈表(兩個(gè)版本)

    這篇文章主要介紹了Java實(shí)現(xiàn)雙向鏈表(兩個(gè)版本)的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • 簡(jiǎn)單實(shí)現(xiàn)java音樂(lè)播放器

    簡(jiǎn)單實(shí)現(xiàn)java音樂(lè)播放器

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)音樂(lè)播放器的相關(guān)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06

最新評(píng)論

雅安市| 兴和县| 德清县| 新源县| 五常市| 吉安县| 道孚县| 汶川县| 洛南县| 新晃| 招远市| 双流县| 蓝山县| 邻水| 炉霍县| 洛宁县| 三门县| 延吉市| 星座| 临高县| 沁阳市| 侯马市| 平安县| 丰都县| 丰镇市| 锦屏县| 灵石县| 桂平市| 江城| 景德镇市| 鄂伦春自治旗| 宝应县| 青铜峡市| 资阳市| 新沂市| 醴陵市| 河西区| 柘荣县| 桑植县| 澄城县| 石楼县|