RabbitMQ を使用して単純な Spring Cloud Stream アプリケーションを構成しようとしています。私が使用するコードは、主にspring-cloud-stream-samplesから取得されます。エントリポイントがあります:
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
例からの単純なメッセージ プロデューサー:
@EnableBinding(Source.class)
public class SourceModuleDefinition {
private String format = "yyyy-MM-dd HH:mm:ss";
@Bean
@InboundChannelAdapter(value = Source.OUTPUT, poller = @Poller(fixedDelay = "${fixedDelay}", maxMessagesPerPoll = "1"))
public MessageSource<String> timerMessageSource() {
return () -> new GenericMessage<>(new SimpleDateFormat(this.format).format(new Date()));
}
}
さらに、ここに application.yml 構成があります。
fixedDelay: 5000
spring:
cloud:
stream:
bindings:
output:
destination: test
この例を実行すると、Rabbit に接続され、test という交換が作成されます。しかし、私の問題は、キューとバインドが自動的に作成されないことです。Rabbit でトラフィックが発生しているのを確認できますが、すべてのメッセージが消えてしまいます。消費者が読み取らない限り、キューに留まる必要があります。
何かを誤解しているのかもしれませんが、私が読んだすべてのトピックから、Spring Cloud Stream はキューとバインディングを自動的に作成する必要があるようです。そうでない場合、メッセージが永続化されるように構成するにはどうすればよいですか?
Spring Cloud Brixton.SR5 と Spring Boot 1.4.0.RELEASE を使用しています。