【发布时间】:2021-09-29 20:56:15
【问题描述】:
我正在使用 PolledProcessor 实现一个 Spring Cloud 数据流处理器。我按照这里的例子https://spring.io/blog/2018/02/27/spring-cloud-stream-2-0-polled-consumers。下面是我的代码。我将一个带有源管道的流部署到这个处理器(源 | polled-processor)到 scdf,并让源发布了一些消息。我确认处理器每秒都会从 scdf rabbitmq 轮询消息,但result 始终是false。我去了 scdf rabbitmq 控制台,我看到那些消息都在队列中。因此,尽管处理器在代码中不断轮询,但它并没有轮询消息。我还看到队列没有消费者。看起来 scdf 没有将此处理器绑定到队列。知道为什么吗?
public interface PolledProcessor {
@Input
PollableMessageSource source();
@Output
MessageChannel dest();
}
@SpringBootApplication
@EnableBinding(PolledProcessor.class)
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public ApplicationRunner runner(PollableMessageSource source, MessageChannel dest) {
return args -> {
while (true) {
boolean result = source.poll(dest::send);
Thread.sleep(1000);
}
};
}
}
这里是源和处理器之间的队列状态
【问题讨论】:
-
您需要编辑问题以显示
application.yml/properties并提供版本信息 - 但我要到明天才能查看它。完成后在此处发表评论,以便我收到通知。 -
没有application.yml/properties,因为该应用不使用任何属性。 spring cloud 数据流版本是2.6.1
-
截图中没有消费者。您在寻找正确的队列吗?
-
是的,没有消费者是我的问题。那是spring cloud数据流在源和处理器之间自动创建的队列,它应该将处理器作为消费者绑定到队列
-
我的错误 - 被调查的消费者是短暂的,通常不会出现在 UI 中。我会尽快测试并回复。
标签: spring-cloud-stream spring-cloud-dataflow