Исключение: не доступен заголовок output-channel или replyChannel. Spring Integration - PullRequest
0 голосов
/ 13 января 2020

Я использую Spring Integration с очень простым c потоком: Шлюз -> Разветвитель -> Агрегатор -> Активатор службы. Мой активатор предполагает вернуться обратно к шлюзу, но это не так. Я получаю «заголовок output-channel или replyChannel недоступен». При подключении шлюза напрямую к активатору службы он работает нормально. Вот код вкратце:

@MessagingGateway(name = "gtw", defaultRequestChannel = "defChannel") 
public interface IdemoGatewayInbound {


  @Gateway(replyChannel = "backToGatewayChannel")   
  Message<String> processRequest(Message<List<BaseRequest>> message);


}



@MessageEndpoint
public class demoRequestSplitter {

    @Splitter(inputChannel = "defChannel", 
                outputChannel = "requestSplitterOutputChannel")
    public List<BaseRequest> splitRequestList(Message<List<BaseRequest>> message) {
        return message.getPayload();
    }
}


@MessageEndpoint
public class demoChannelAggregator {


  @Aggregator(inputChannel = "requestSplitterOutputChannel", outputChannel = "requestAggregatorOutputChannel"  )
  public Message<List<BaseRequest>> aggregatingMethod(List<BaseRequest> items) {

    Message<List<BaseRequest>> build = MessageBuilder.withPayload(items).setHeader(ChannelsConstants.DESTINATION_SYSTEM_CODE, "DEST1").build();

    Map<String,String> headersToCopy = new HashMap<>();    
    headersToCopy.put(ChannelsConstants.DESTINATION_SYSTEM_CODE, "DEST1");    
    Message<List<BaseRequest>> msg1 = MessageBuilder.withPayload(items).copyHeaders(headersToCopy).build();        

    return msg1;
  }


@MessageEndpoint
public class demoServiceActivator {


  @ServiceActivator(inputChannel = "requestAggregatorOutputChannel" , outputChannel = "myReplyChannel")
  public Message<String> outboundAdaptor(Message<List<BaseRequest>> destinationSysRequestList
      ) {        
    Message<String> build = MessageBuilder.withPayload("INNNN").setHeader("replyChannel", "backToGatewayChannel").build();   
    return msg1;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...