Существует проблема, которую ваш вопрос помог обнаружить, и он связан с несоответствием жизненного цикла между автоконфигурациями, предоставляемыми функцией и потоком. Эта проблема проявляется в том, что точка отдыха, созданная 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());
};
}
}