如何在@StreamListener 中添加日期条件

Oli*_*ien 2 spring-boot spring-cloud spring-cloud-stream

假设,我能够通过 Kafka 或 RabbitMQ 发送消息并使用 @StreamListener 使用它们。

绑定器配置为 content-type = 'application/json',所以我想可以在有效负载上添加条件。

我的要求是仅当字段的日期在 now() 之前时才获取元素。当此条件为真时,将消耗所有其他元素。

例如,我希望像这样:

@StreamListener(value = INPUT, condition = "data.startDate > now()")
public void onMessage(@Payload Data data) { 
    // ...
}
Run Code Online (Sandbox Code Playgroud)

第一个问题是我收到错误:EL1008E:在“byte[]”类型的对象上找不到属性或字段“startDate”——可能不是公共的或无效的?

Ole*_*sky 6

这是正确的,因为有效负载未转换为任何类型并且以原始形式存在,即byte[]. 请具体参见本节“条件上下文中的内容类型协商”小节。

但是,对于您的情况,您可以简单地将表达式修改为类似new String(payload)....,知道它总是byte[]在转换之前