亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

遇到的問題

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

碰到的天坑

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

處理步驟

加載配置
度了很多文章,都提到了需要在服務(wù)啟動的時候引入認證配置文件,設(shè)置屬性 java.security.auth.login.config,度了一下是有兩種方式。
a). 在服務(wù)啟動的時候用參數(shù)引入,命令如下:
java -Djava.security.auth.login.config=(具體地址自己填,因為我配置文件是跟test.jar同級目錄所以無前綴)kafka_jaas_config.config -jar test.jar
b). 在代碼中去引入,如:(這方式我是沒試的)
System.setProperty(“java.security.auth.login.config”, “kafka_jaas_config.config”);

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

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

設(shè)置認證參數(shù)(如果有的話)
類似要填的參數(shù)是:
security.protocol,sasl.mechanism,sasl.jaas.config(,sasl.username和sasl.password,這兩個我看是高版本直接配置據(jù)說能認證,不需要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.自己查配置還有是否需要認證的信息
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)容");

廢話

我這是因為為了方便加了個緩存隊列,存儲了kafka已經(jīng)連過的服務(wù),不需要的話完全可以自己改造去掉這部分。如果有可以精進的問題可以提啊,歡迎挑刺。

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

相關(guān)文章

  • java實現(xiàn)簡單的ATM項目

    java實現(xiàn)簡單的ATM項目

    這篇文章主要為大家詳細介紹了java實現(xiàn)簡單的ATM項目,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • SpringBoot集成RbbitMQ隊列踩坑記錄

    SpringBoot集成RbbitMQ隊列踩坑記錄

    這篇文章主要介紹了SpringBoot集成RbbitMQ隊列踩坑記錄,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • java實現(xiàn)線性表及其算法

    java實現(xiàn)線性表及其算法

    線性表是最簡單和最常用的一種數(shù)據(jù)結(jié)構(gòu),它是有n個體數(shù)據(jù)元素(節(jié)點)組成的有限序列,這篇文章主要介紹了java實現(xiàn)線性表及其算法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Java實現(xiàn)將容器 Map中的內(nèi)容保存到數(shù)組

    Java實現(xiàn)將容器 Map中的內(nèi)容保存到數(shù)組

    這篇文章主要介紹了Java實現(xiàn)將容器 Map中的內(nèi)容保存到數(shù)組,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Java實現(xiàn)幀動畫的實例代碼

    Java實現(xiàn)幀動畫的實例代碼

    這篇文章主要介紹了Java實現(xiàn)幀動畫的實例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • Spring?Boot緩存實戰(zhàn)之Redis?設(shè)置有效時間和自動刷新緩存功能(時間支持在配置文件中配置)

    Spring?Boot緩存實戰(zhàn)之Redis?設(shè)置有效時間和自動刷新緩存功能(時間支持在配置文件中配置)

    這篇文章主要介紹了Spring?Boot緩存實戰(zhàn)?Redis?設(shè)置有效時間和自動刷新緩存,時間支持在配置文件中配置,需要的朋友可以參考下
    2023-05-05
  • java類實現(xiàn)日期的時間差的實例講解

    java類實現(xiàn)日期的時間差的實例講解

    在本篇文章里小編給大家整理的是一篇關(guān)于java類實現(xiàn)日期的時間差的實例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-01-01
  • 詳解Java七大阻塞隊列之SynchronousQueue

    詳解Java七大阻塞隊列之SynchronousQueue

    SynchronousQueue不需要存儲線程間交換的數(shù)據(jù),它的作用像是一個匹配器,使生產(chǎn)者和消費者一一匹配。本文詳細講解了Java七大阻塞隊列之一SynchronousQueue,需要了解的小伙伴可以參考一下這篇文章
    2021-09-09
  • java字符串的重要使用方法以及實例

    java字符串的重要使用方法以及實例

    在本篇文章里小編給大家整理了關(guān)于java字符串的重要使用方法以及實例代碼,需要的朋友們可以跟著學(xué)習(xí)參考下。
    2019-03-03
  • SpringBoot整合阿里云視頻點播的過程詳解

    SpringBoot整合阿里云視頻點播的過程詳解

    視頻點播(ApsaraVideo for VoD)是集音視頻采集、編輯、上傳、自動化轉(zhuǎn)碼處理、媒體資源管理、分發(fā)加速于一體的一站式音視頻點播解決方案。這篇文章主要介紹了SpringBoot整合阿里云視頻點播的詳細過程,需要的朋友可以參考下
    2021-12-12

最新評論