spring-boot - 使用 Spring Cloud Stream Kafka 进行手动确认的批处理
问题描述
我正在尝试使用手动确认将单个消息处理转换为批处理。没有批处理,代码按预期工作。但不知何故,它不适用于批处理。
这是我的属性和代码
spring.cloud.stream.kafka.bindings.inputChannel-in-0.batch-mode=true
@Bean
public Consumer<List<Message<?>>> inputChannel() {
return batch -> {
for ( message : batch) {
log.info("Message Processing Starts :: ");
Acknowledgment acknowledgment = message.getHeaders().get(KafkaHeaders.ACKNOWLEDGMENT, Acknowledgment.class);
// process message and
// acknowledge manually
if(acknowledgement != null ){
ackwoledge...
}
};
}
但我得到 classCastException Caused by: java.lang.ClassCastException: class org.springframework.messaging.support.GenericMessage cannot be cast to class java.util.List (org.springframework.messaging.support.GenericMessage is in unnamed module of loader 'app'; java.util.List 在加载器'bootstrap'的模块 java.base 中)
另外,考虑到批处理的 maxAttempt = 1,如何在此处添加重试功能
解决方案
推荐阅读
- spring-webflux - Spring WebFlux 中的 ClientRequest 和 ClientHttpRequest 是如何连接的
- angular - 打字稿:字符串枚举返回未定义
- php - 问题 1 - 结论:不要安装 zendframework/zend-cache
- java - java xmlencoder 格式不正确
- python - 增加条形宽度 xlsxwriter 图表
- visual-studio-code - 如何添加一个运行特定 .bat 的任务,该任务位于打开的源文件的文件夹中?
- graphql - GraphQL 批量解析/防止复杂类型请求开销
- mysql - 使用cmd从其他目录连接mysql数据库
- sql-server - 将 Oracle 递归查询转换为 SQL Server
- authentication - 如何在打开的 google-spreadsheet 上请求 popup-auth-window 以获取用户电子邮件?