私は春の雲のストリームカフカの同期プロデューサーを春のブートマイクロサービスで使用しています。私たちがサービスを配備するたびに、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());
}
}
を公開するために使用される方法でありますメッセージの順序と耐久性を保証するものの、最初の要求だけが長時間かかるのはなぜですか?この問題は既知の問題ですか?最新のカフカ版で修正されています。誰かが提案することができます。依存関係の下に使用してダウンロード春のクラウドストリームのバージョンに問題があるようおかげで
実際のアプリケーション起動時間を除いて20秒ですか? –
はい、サービスの開始時刻を除外します –