2

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 を使用しています。

4

2 に答える 2

0

キューを作成するには、コンシューマーが必要です。

ここでは、rabbitMq を使用したプロデューサーとコンシューマーの例を見つけることができます。

http://ignaciosuay.com/how-to-implement-asyncronous-communication-between-microservices-using-spring-cloud-stream/

于 2017-03-24T16:03:09.113 に答える