簡體   English   中英

如何處理未授權訪問Kafka Streams中的主題…

[英]How to handle Not authorized to access topic … in Kafka Streams

情況如下。

我們在Kafka Broker中設置了SSL + ACL。

我們正在建立流,該流從兩個主題讀取消息:

KStream<String, String> stringInput 
    = kBuilder.stream( STRING_SERDE, STRING_SERDE, inTopicName );

stringInput
    .filter( streamFilter::passOrFilterMessages )
    .map( processor )
    .to( outTopicName );

它完成了兩次(在循環中)。 然后我們設置常規錯誤處理程序:

streams.setUncaughtExceptionHandler( ( Thread t, Throwable e ) -> {
                    synchronized ( this ) {
                        LOG.fatal( ... );
                        this.stop();
                    }
                }
        );

問題如下。 例如,如果在一個主題中證書不再有效。 流拋出異常未經授權訪問主題...到目前為止,一切都很好。

但是異常是由通用錯誤處理程序處理的,因此即使第二個主題沒有問題,整個應用程序也會停止運行。

問題是,如何按主題處理此異常? 如何避免局面在某一時刻完整的應用程序,由於停止到一個 單一的主題與授權問題的問題?

我了解,如果經紀人不可用,則完整的應用程序可能會停止。 但是,如果只有一個主題不可用,那么單個流將停止,並且無法完成應用程序,或者?

按照設計,Kafka Streams將拓撲視為一個,並且無法區分這兩個部分。 對於您的特定情況,當您循環並構建到獨立的管道時,可以並行運行兩個KafkaStreams實例(在同一應用程序/ JVM中),以將兩者彼此隔離。 因此,如果一個失敗,則另一個不受影響。 您將需要為兩個實例使用兩個不同的application.id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM