我想知道是否可以调用流源而不是轮询。 我的来源就是这样(赢得了工作):
@SpringBootApplication
@RestController
@EnableBinding(Source.class)
public class ServiceApplication {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
public static void main(String[] args) {
SpringApplication.run(ServiceApplication.class, args);
}
@Autowired
private PersonsRepository dao;
@GetMapping("/send")
public String sendMessage() {
this.sendVoter("foo");
return "VOTER SENT";
}
@SentTo(Source.OUTPUT)
private Person sendVoter(String name) {
logger.warn("Sending...");
return dao.findByFirstname(name);
}
}
为了让它开始,我必须编写代码:
@SpringBootApplication
@RestController
@EnableBinding(Source.class)
public class ServiceApplication {
...
@GetMapping("/send")
public String sendMessage() {
this.sendVoter();
return "VOTER SENT";
}
@InboundChannelAdapter(Source.OUTPUT)
private Person sendVoter() {
logger.warn("Sending...");
return dao.findByFirstname("foo");
}
}
但是消息来源马上就开始了。它没有以编程方式触发。 我是否必须使用ApplicationEventPublisher或仅用于Spring Cloud Bus应用程序?我无法想到的任何其他提示? 感谢任何光明
答案 0 :(得分:1)
您可以直接注入频道或界面,并通过控制器方法以与此类似的方式调用它:http://docs.spring.io/spring-cloud-stream/docs/Brooklyn.SR2/reference/htmlsingle/#_injecting_the_bound_interfaces