下面是我们如何将消息发布到主题,
for(int i=0;i<=10000;i++){
send("topic_name", "message");
}
对于上述主题,我们具有以下流侦听器,
@StreamListener("topic_name")
public void process(KStream<String, String> inputKStream) {
//processing of messages
}
现在的要求是,我们需要在触发API时停止处理消息。
为此,我们有一个如下所示的控制器,
@Autowired
private CustomBindingEndpoint endpoint;
@PutMapping(value = "stop", produces = APPLICATION_JSON_UTF8_VALUE)
public void stopProcess() {
endpoint.changeState("topic_name", State.STOPPED);
}
CustomBindingEndpoint.java与https://github.com/spring-cloud/spring-cloud-stream/issues/1650#issuecomment-476626008
一旦触发此API,我们期望上述StreamListener(“ topic_name”)应该停止(必须停止进一步消耗)
但是一旦触发,即使为“ topic_name”调用binding.stop(),使用者仍然会使用消息。
我知道binding.stop()会阻止使用者使用消息。如果我错了,请纠正。请建议我们如何实现这一目标。