Реализация по пути решения Ярослава Булатова доступна на https://github.com/bamos/setGPU .
Существует проблема, которую ваш вопрос помог обнаружить, и она связана с несоответствием жизненного цикла между автоконфигурациями, предоставляемыми функцией и потоком. Эта проблема проявляется в том, что точка покоя, созданная Spring Cloud Functions, не может видеть привязки, так как она создана намного раньше
. Поэтому мы вскоре рассмотрим проблему. Между тем существует обходной путь, который потребует от вас доступа к каналу output
из ApplicationContext (см. Ниже):
@SpringBootApplication
@EnableBinding(Source.class)
public class SimpleFunctionRabbitDemoApplication {
public static void main(String[] args) throws Exception {
SpringApplication.run(SimpleFunctionRabbitDemoApplication.class);
}
@Bean
public Consumer<String> storeSync(ApplicationContext context) {
return v -> {
MessageChannel channel = context.getBean(Source.OUTPUT, MessageChannel.class);
channel.send(MessageBuilder.withPayload(v).build());
};
}
}