0

メッセージを分割して 1 つずつ処理する必要があります。いずれかのメッセージが失敗した場合は、エラー チャネルに報告し、次の利用可能なメッセージの処理を再開したいと思います

1.0.0-SNAPSHOT で春のクラウド aws ストリーム スターターを使用しています

スプリッターを使ったサンプルプログラムを書いてみました

     @Bean
      public MessageChannel channelSplitOne() {
        return new DirectChannel();
      }


      @StreamListener(INTERNAL_CHANNEL)
      public void channelOne(String message) {
        if (message.equals("l")) {
          throw new RuntimeException("Error due to l");
        }
        System.out.println("Internal: " + message);
      }


      @Splitter(inputChannel = Sink.INPUT, outputChannel = INTERNAL_CHANNEL)
      public List<Message> extractItems(Message<String> input) {
        return Arrays.stream(input.getPayload().split(""))
            .map(s -> MessageBuilder.withPayload(s).copyHeaders(input.getHeaders()).build())
            .collect(Collectors.toList());
      }

メッセージを Hello として送信すると、'h'、'e'、'o' は処理されると予想されますが、'l' はエラーとして報告されます。

しかし、ここでは 'l' の後、処理は再開されません。

これを達成する方法はありますか。

4

1 に答える 1