0

Я новичок весны облака и надеюсь изменить нашу моно структуру микро услуг, это сказало в первом, что я пытаюсь сделать теперь это следующиеСовокупных сообщений Спринг Облако поток

  1. Прием запросов для вызова веб-сервис (внешняя система) из разных источников. В любое время это может быть 1 запрос или запрос до 100K.
  2. Внешняя система поддерживает объем, поэтому лучше, если я смогу агрегировать сообщения и отправить их навалом. Например, сохраняйте агрегацию до тех пор, пока не будет достигнут порог числа (100 сообщений) или порог времени 2 секунды.
  3. Кроме того, если я получил ошибку я хочу обратно экспоненциально

Моя первая идея состоит в том, чтобы создать процессор перед моей раковиной, что делать выше агрегацию.

Это правильный способ мышления в облачных вычислениях или их еще один путь?


Рабочий раствор

@EnableBinding(Processor.class) 
class Configuration { 

    @Autowired 
    Processor processor; 


    @ServiceActivator(inputChannel = Processor.INPUT) 
    @Bean 
    public MessageHandler aggregator() { 

     AggregatingMessageHandler aggregatingMessageHandler = 
       new AggregatingMessageHandler(new DefaultAggregatingMessageGroupProcessor(), 
         new SimpleMessageStore(10)); 

     //AggregatorFactoryBean aggregatorFactoryBean = new AggregatorFactoryBean(); 
     //aggregatorFactoryBean.setMessageStore(); 
     aggregatingMessageHandler.setOutputChannel(processor.output()); 
     //aggregatorFactoryBean.setDiscardChannel(processor.output()); 
     aggregatingMessageHandler.setSendPartialResultOnExpiry(true); 
     aggregatingMessageHandler.setSendTimeout(1000L); 
     aggregatingMessageHandler.setCorrelationStrategy(new ExpressionEvaluatingCorrelationStrategy("'FOO'")); 
     aggregatingMessageHandler.setReleaseStrategy(new MessageCountReleaseStrategy(3)); //ExpressionEvaluatingReleaseStrategy("size() == 5") 
     aggregatingMessageHandler.setExpireGroupsUponCompletion(true); 
     aggregatingMessageHandler.setGroupTimeoutExpression(new ValueExpression<>(3000L)); //size() ge 2 ? 5000 : -1 
     aggregatingMessageHandler.setExpireGroupsUponTimeout(true); 
     return aggregatingMessageHandler; 
    } 
} 

ответ

0

Вы можете написать заявление в aggregator процессор, который сочетает в себе несколько сообщений в одно сообщение. Для получения дополнительной информации об агрегаторе Spring Integration см. here