我们将Spring Kafka与Spring Boot(所有最新版本)结合使用。我们将Kafka消息的处理转换为KafkaHandler注释方法,并期望有效的验证方法和有效的有效载荷能够确保有效载荷的验证,但事实并非如此。此功能适用于KafkaListener,是否也适用于KafkaHandler?
@KafkaListener(...)
@Component
public class NotificationListener {
@KafkaHandler
public void handleV1(@Payload @Valid NotificationV1 notification) {
非常感谢。
KafkaListener与Valid注释一起工作的原因是,它就像restful控制器endpoint一样,是服务的入口。该团队致力于为这些情况下的验证工作添加支持,可以发现该验证机制是在2018年添加的。
至于@KafkaHandler
,我对spring-kafka不太熟悉,但如果验证不起作用,那只是意味着团队不添加对这种情况的支持。我建议您使用Spring Boot方法验证功能,它适用于所有Spring托管bean和所有标准验证注释,例如@size
。最后一件事,小心验证失败时抛出的异常。
在这种情况下不应用Validator
,因为我们只是没有为此目的访问PayloadMesodArgumentResolver
。
多方法@KafkaListener
的目标有效负载在我们调用该方法之前被解析,因为我们肯定需要知道要调用哪个方法。这样的逻辑在InvocableHandlerM中完成ethod.get方法()
:
args[i] = findProvidedArgument(parameter, providedArgs);
if (args[i] != null) {
continue;
}
...
try {
args[i] = this.resolvers.resolveArgument(parameter, message);
}
验证程序功能是在那些解析程序中完成的。findProvidedArgument()为我们提供了之前为执行而转换的负载,这里我们只是不检查参数上的任何注释。
当我们选择了一个处理程序并且在调用它之前,我们可能需要将验证逻辑轮询到DelegatingInvokableHandler中。。。
请随时提出GitHub问题,这样我们就不会忘记这需要以某种方式加以解决。
我正在尝试为我的容器配置网络选项,但在尝试以下命令时: 我得到以下结果: root@Server02:/var/lib#lxc网络创建测试br0 用法:lxc[选项] 检查可用命令列表,我不认为网络是一个选项 以下是我看到的可用命令: 配置,复制,删除,执行,文件,手指,图像,信息,初始化,启动,列表,监控,移动,暂停,配置文件,发布,远程,重启,恢复,快照,启动,停止,版本 我正在使用Ubunt
我试图通过DropBox系列中提供的API启用Dropbox操作 这里是生成的url: https://api.dropbox.com/1/metadata/sandbox/public/2WayServiceOverview.pdf?oauth_consumer_key=XXXXXX 当然有些数据我替换不分享所有:-) 授权通过后,我获得访问代码,然后得到{“错误”:“无效或缺少签名”} 文件p
环境: Selenium webdriver,TestNG,Maven 当我运行我的脚本时,我得到了这个错误: org.openqa.selenium.WebDriverException:未知错误:丢失或无效的'entry.level'(会话信息:chrome=63.0.3239.132)(驱动程序信息:chrome驱动程序=2.29.461591(62ebf098771772160f391d7
我正在设置一个spring boot应用程序,其中日志被发送到google cloud stackdriver。我正在使用logback appender进行堆栈驱动程序日志记录,并使用其文档中的logback文件https://cloud.google.com/logging/docs/setup/java. 我将Intellij中的GOOGLE_CLOUD_PROJECT和GOOGLE_APP
我已经安装Kibana版本6.5。我选择了30天免费试用,并启用了x-pack安全选项。 通过KibanaUI我创建了一个用户并分配了报告所需的两个角色-kibana_user和reporting_user。现在我通过这个新用户登录,但在仪表板上找不到报告选项。 即使我使用具有超级用户角色的elastic用户登录,行为也是一样的。我错过什么了吗? 我在Kibana startup上看到一条日志,上
我正在尝试为maven设置enforcer插件,以强制执行最低Java版本。但是,每当我尝试运行,我都会得到: 目标组织的参数“规则”。阿帕奇。专家插件:maven enforcer插件:1.3.1:enforce缺失或无效 以下是我的pom文件的相关部分: 我还尝试替换