我是Spring Integration的新手。我们正在使用Spring Integration Annotations创建应用程序。 我已经配置了@InboundChannelAdapter,轮询器的固定延迟为5秒。但是问题是,一旦我在weblogic上启动我的应用程序,适配器就会开始轮询并几乎没有消息到达端点。 我们需要调用rest服务,然后触发此适配器。 有没有办法实现相同的目的?
TIA!
答案 0 :(得分:1)
将autoStartup
属性设置为false
,然后使用控制总线启动/停止它。
@SpringBootApplication
@IntegrationComponentScan
public class So59469573Application {
public static void main(String[] args) {
SpringApplication.run(So59469573Application.class, args);
}
}
@Component
class Integration {
@Autowired
private ApplicationContext context;
@InboundChannelAdapter(channel = "channel", autoStartup = "false",
poller = @Poller(fixedDelay = "5000"))
public String foo() {
return "foo";
}
@ServiceActivator(inputChannel = "channel")
public void handle(String in) {
System.out.println(in);
}
@ServiceActivator(inputChannel = "controlChannel")
@Bean
public ExpressionControlBusFactoryBean controlBus() {
return new ExpressionControlBusFactoryBean();
}
}
@MessagingGateway(defaultRequestChannel = "controlChannel")
interface Control {
void send(String control);
}
@RestController
class Rest {
@Autowired
Control control;
@PostMapping("/foo/{command}")
public void trigger(@PathVariable String command) {
if ("start".equals(command)) {
control.send("@'integration.foo.inboundChannelAdapter'.start()");
}
}
}