2017-08-06 7 views
0

私はSpringのioドキュメントに記載されているサンプル構成を使用しており、うまくいきます。Spring統合 - Kafkaメッセージ駆動チャネル - 自動確認

<int-kafka:message-driven-channel-adapter 
     id="kafkaListener" 
     listener-container="container1" 
     auto-startup="false" 
     phase="100" 
     send-timeout="5000" 
     channel="nullChannel" 
     message-converter="messageConverter" 
     error-channel="errorChannel" /> 

しかし、私がkafkaから消費し、下流に公開する下流アプリケーションでテストしていたとき。ダウンストリームがダウンしている場合、メッセージはまだ消費されていて、再生されませんでした。

また、サービスアクティベータで何らかの例外が見つかった場合、カフカのメッセージを再生できるようにトランザクションをロールバックする必要があるいくつかの例外もスローしたいとします。

要するに、消費しているアプリケーションに問題がある場合は、メッセージが自動的に確認されないようにトランザクションをロールバックして、正常に処理されない限り何度も何度も再生します。

答えて

0

これは、Apache Kafkaの仕組みではありません。 JMSと同様のTXセマンティクスがあります。カフカのトピックのオフセットには、rallbackやredeliveryはありません。

Apache Kafkaを公式のリソースから近づけることをお勧めします。

春カフカは、通常のApacheのカフカプロトコル上の何ももたらさない、しかし、あなたはローカルで同じレコードを再配信する春カフカで機能を再試行使用することを考慮することができますが:http://docs.spring.io/spring-kafka/docs/1.2.2.RELEASE/reference/html/_reference.html#_retrying_deliveries

そして、はい、ACKモードは、MANUALも行う必要があります。消費後自動的にKafkaへのオフセットをコミットしないでください。

関連する問題