Spring Cloud Stream 验证
Posted
技术标签:
【中文标题】Spring Cloud Stream 验证【英文标题】:Spring Cloud Stream validation 【发布时间】:2018-05-18 12:00:09 【问题描述】:如何使用基于标准 Spring 注解的验证在消息侦听器中使用 Spring Cloud Stream 框架执行验证?
尝试了不同的情况,使用 @Valid @Payload
for 传入对象,尝试使用 @Validated
在实体上的方法验证后处理器,但没有帮助。
@StreamListener(MediaItemStream.ITEM_LIKED_CHANNEL)
public void handleLikeMessage(@Valid @Payload LikeInputDto like) ...
和
@Bean
public MethodValidationPostProcessor methodValidationPostProcessor()
return new MethodValidationPostProcessor();
目前最好的方法是使用自定义服务进行验证,但它看起来并不理想..
@Log4j2
@Service
@AllArgsConstructor
public class LikeStreamHandler
private MediaEventMessagingService mediaEventMessagingService;
private ValidationService validationService;
@StreamListener(MediaItemStream.ITEM_LIKED_CHANNEL)
public void handleLikeMessage(LikeInputDto like)
validationService.validate(like);
log.debug("Handling LIKE message: ", like);
mediaEventMessagingService.processLikeEvent(like);
【问题讨论】:
【参考方案1】:这是Spring Cloud Stream v2.1.0的新特性:Issue on GitHub: "Add (javax.)Validation Support for Stream Listener"
【讨论】:
以上是关于Spring Cloud Stream 验证的主要内容,如果未能解决你的问题,请参考以下文章
Spring Cloud Stream在同一通道根据消息内容分发不同的消费逻辑
spring cloud-stream 和 spring cloud-bus 有啥区别?