私はRouteBuilderのソースとしてKafkaを設定しています。私の目標は、カフカの切断問題を処理することです。私のRouteBuilderは次のとおりです:Camel:Kafkaの間違ったIPを検出する
new RouteBuilder() {
public void configure() {
onException(Exception.class).process(exchange -> {
final Exception exception = exchange.getException();
logger.error(exception.getMessage());
// will do more processing here
});
from(String.format("kafka:%s?brokers=%s:%s", topicName, host, port)).bean(getMyService(), "myMethod")
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
// some more processing
}
});
}
};
私は誤ったホストとポートを提供し、例外が発生すると予想されます。ただし、ログには例外はなく、onException処理は呼び出されません。 私が間違っていることは何ですか?
同様の問題は、https://github.com/apache/camel/blob/master/examples/camel-example-kafka/src/main/java/org/apache/camel/example/kafka/MessageConsumerClient.javaをローカルで実行してもKafkaサーバーを実行しなくても再現できます。メッセージの一定の流れでそう結果をやって:
Connection to node -1 could not be established. Broker may not be available.
は例外スローを持ってする方法はありますか? ご協力いただければ幸いです。
しかし、私は接続がないことをどのように検出できますか? – user2045777
プロデューサーを使って、カフカに何かを最初に送ろうとするかもしれません。 – Oscerd
私はいくつかの進歩を遂げ、エンドポイントでsetBridgeErrorHandlerを使用する必要があることを知りました(http://static.javadoc.io/org.apache.camel/camel-core/2.18.0/org/apache/camel/implを参照)。 /DefaultEndpoint.html#setBridgeErrorHandler-boolean-) は、例えば、修飾された - https://github.com/apache/camel/blob/master/examples/camel-example-kafka/src/main/java/org /apache/camel/example/kafka/MessageConsumerClient.java camelContext.start()の直後のコードに と が追加されました。 – user2045777