Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 夸克斯+;卡夫卡+;Smallrye异常处理_Java_Apache Kafka_Quarkus_Smallrye Reactive Messaging - Fatal编程技术网

Java 夸克斯+;卡夫卡+;Smallrye异常处理

Java 夸克斯+;卡夫卡+;Smallrye异常处理,java,apache-kafka,quarkus,smallrye-reactive-messaging,Java,Apache Kafka,Quarkus,Smallrye Reactive Messaging,我如何使用quarkus+kafka+smallrye处理流式处理异常 我的代码与quarkus指南()上的命令生成器示例非常相似 import io.smallrye.reactive.messaging.annotations.Channel; 导入io.smallrye.reactive.messaging.annotations.Emitter; 导入javax.inject.inject; 导入javax.ws.rs.POST; 导入javax.ws.rs.Path; 导入javax.

我如何使用quarkus+kafka+smallrye处理流式处理异常

我的代码与quarkus指南()上的命令生成器示例非常相似

import io.smallrye.reactive.messaging.annotations.Channel;
导入io.smallrye.reactive.messaging.annotations.Emitter;
导入javax.inject.inject;
导入javax.ws.rs.POST;
导入javax.ws.rs.Path;
导入javax.ws.rs.Consumes;
导入javax.ws.rs.core.MediaType;
@路径(“/价格”)
公共类价格资源{
@注入@Channel(“价格创建”)发射器priceEmitter;
@职位
@使用(MediaType.TEXT\u PLAIN)
公共价格(双倍价格){
发送(价格);
}
}
我想要类似于香草卡夫卡库的东西,它提供了处理请求发送的每条记录的回调的选项

ProducerRecord<String, String> record = new ProducerRecord<>("topic-name", key, value);

producer.send(record, new Callback() {
    @Override
    public void onCompletion(RecordMetadata metadata, Exception exception) {
        logger.info(record.toString());

        if (exception != null) {
            logger.error("Producer exception", exception);
        }
    }
});
ProducerRecord=新的ProducerRecord(“主题名称”、键、值);
producer.send(记录,新回调(){
@凌驾
公共void onCompletion(记录元数据、异常){
logger.info(record.toString());
if(异常!=null){
logger.error(“生产者异常”,异常);
}
}
});
Tks

有一个

@传入(“i”)
@外向的(“j”)
@确认(确认.策略.手册)
公共完成阶段手册确认(信息输入){
返回CompletableFuture.SupplySync(输入::getPayload)
.thenApply(消息::of)
.thenCompose(m->input.ack().thenApply(x->m));
}

如果您的解决方案是完全反应式的(使用@incoming和@outing),那么它将起作用。但是他正在使用
发射器
来生成消息!。在使用发射器的情况下,他如何处理异常?@iabug很好,但我不确定。我仍然会参考文档,我遵循@Ken的建议并得到了回复。有一个新的发射器提交提供了此功能。send方法返回CompletionStage,这样我就可以处理结果了。请在此提出一个问题:包括一台复制机,我们可以进行调查。这可能是我们需要更好的错误处理暴露给用户,肯,我正在继续!!
ProducerRecord<String, String> record = new ProducerRecord<>("topic-name", key, value);

producer.send(record, new Callback() {
    @Override
    public void onCompletion(RecordMetadata metadata, Exception exception) {
        logger.info(record.toString());

        if (exception != null) {
            logger.error("Producer exception", exception);
        }
    }
});
@Incoming("i")
@Outgoing("j")
@Acknowledgment(Acknowledgment.Strategy.MANUAL)
  public CompletionStage<Message<String>> manualAck(Message<String> input) {
    return CompletableFuture.supplyAsync(input::getPayload)
      .thenApply(Message::of)
      .thenCompose(m -> input.ack().thenApply(x -> m));
  }