1

私は春の雲のストリームカフカの同期プロデューサーを春のブートマイクロサービスで使用しています。私たちがサービスを配備するたびに、kafkaへの最初の呼び出しでメッセージをTopicに公開するのに20秒以上かかります。その後のすべての呼び出しは3〜4ミリ秒かかることはほとんどありません。この問題はランダムに発生し、断続的ですが、サービスを再開するとほとんどが発生します。私たちはここに 依存関係{kafka同期プロデューサが最初のリクエストで時間がかかります

compile('org.springframework.cloud:spring-cloud-starter-stream-kafka') 
} 
dependencyManagement { 
imports { 
mavenBom "org.springframework.cloud:spring-cloud-dependencies:Camden.SR3" 
} 
} 

以下のようにカフカのバージョン0.9.0.1とGradleの依存関係を使用している アプリケーションです。 YML


spring: 
cloud: 
stream: 
bindings: 
output: 
content-type: application/json 
destination: SOPOrderReceiveTopic 
kafka: 
binder: 
brokers: "localhost:9092,localhost:9093" 
headers: eventType 
requiredAcks: -1 
zkNodes: "localhost:2181" 
bindings: 
output: 
producer: 
configuration: 
max: 
block: 
ms: 20000 
reconnect: 
backoff: 
ms: 5000 
request: 
timeout: 
ms: 30000 
retries: 3 
retry: 
backoff: 
ms: 10000 
timeout: 
ms: 30000 
sync: true 

私は認識している同期プロデューサーだ私は、出力チャネルとしてorg.springframework.cloud.stream.messaging.Sourceを使用していますが、これはメッセージ

public void publish(Message event) { 
    try { 
     boolean result = source.output().send(event, orderEventConfig.getTimeoutMs()); 
     logger.log(LoggingEventType.INFORMATION, "MESSAGE SENT TO KAFKA : " + result); 
    } catch (Exception publishingExceptionMessage) { 
     logger.log(LoggingEventType.ERROR, "publish event to kafka failed!", publishingExceptionMessage); 
     throw new PublishEventException("publish event to kafka failed for eventPayload: " + event.getPayload(), 
       ThreadVariables.getTenantId()); 
    } 
} 

を公開するために使用される方法でありますメッセージの順序と耐久性を保証するものの、最初の要求だけが長時間かかるのはなぜですか?この問題は既知の問題ですか?最新のカフカ版で修正されています。誰かが提案することができます。依存関係の下に使用してダウンロード春のクラウドストリームのバージョンに問題があるようおかげで

+0

実際のアプリケーション起動時間を除いて20秒ですか? –

+0

はい、サービスの開始時刻を除外します –

答えて

0

それは

imports { 
     mavenBom "org.springframework.cloud:spring-cloud-dependencies:Camden.SR3" 
    } 

は春の雲の流れをアップグレードしてくださいチェック、見えます。これは、springbootサービスの起動後、kafkaサーバー上の最初の公開コールのレイテンシを修正するはずです。

dependencies { 
    compile('org.springframework.cloud:spring-cloud-stream-binder-kafka') 
} 


    ext { springCloudVersion = 'Dalston.RELEASE' } 

    dependencyManagement { 
     imports { 
         mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}" 
       } 
      } 
関連する問題