Spring Cloud Stream - 程序化发布
Spring Cloud Stream - programmatic publishing
我想知道是否可以调用流源而不是轮询。
我的来源将是这样的(行不通):
@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 应用程序?还有其他我想不到的提示吗?
感谢任何光
您可以直接注入通道或接口,并以类似的方式从您的控制器方法中调用它:http://docs.spring.io/spring-cloud-stream/docs/Brooklyn.SR2/reference/htmlsingle/#_injecting_the_bound_interfaces
我想知道是否可以调用流源而不是轮询。 我的来源将是这样的(行不通):
@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 应用程序?还有其他我想不到的提示吗? 感谢任何光
您可以直接注入通道或接口,并以类似的方式从您的控制器方法中调用它:http://docs.spring.io/spring-cloud-stream/docs/Brooklyn.SR2/reference/htmlsingle/#_injecting_the_bound_interfaces