Понимание поведения SqsMessageDrivenChannelAdapter - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь понять поведение SqsMessageDrivenChannelAdapter для решения проблемы с памятью.Исходящая система сбрасывает тысячи сообщений в aws-sqs-queue, все сообщения немедленно принимаются SqsMessageDrivenChannelAdapter.На консоли AWS я не вижу сообщений, доступных в очереди.SqsMessageProcesser затем обрабатывает 1 сообщение каждые 5 секунд.

Вот журнал:

2019-05-21 17:28:18 INFO SQSMessageProcessor: 88 - --- inside sqsMessageProcesser --- 2019-05-21 17:28: 23 INFO SQSMessageProcessor: 88 - --- внутри sqsMessageProcesser --- 2019-05-21 17:28:28 INFO SQSMessageProcessor: 88 - --- внутри sqsMessageProcesser --- 2019-05-21 17:28:33 INFO SQSMessageProcessor: 88 - --- внутри sqsMessageProcesser --- 2019-05-21 17:28:38 ИНФОРМАЦИЯ SQSMessageProcessor: 88 - --- внутри sqsMessageProcesser --- .........................

Означает ли это, что пока SqsMessageProcesser обрабатывает 1 сообщение каждые 5 секунд, тысячи сообщений хранятся в (серверной) памяти in-channel?

Каждая дБ-транзакция занимает около 5 секунд, и в настоящее время мы сталкиваемся с проблемами внеочередности в PRD.

Поможет ли мне установить емкость на QueueChannel и setMaxNumberOfMessages дляSqsMessageDrivenChannelAdapter?Если да, есть ли стандартный способ вычисления этих значений?


  @Bean(name = "in-channel")
  public PollableChannel sqsInputChannel() {
    return new QueueChannel();
  }

  @Autowired
  private AmazonSQSAsync amazonSqs;

  @Bean
  public MessageProducer sqsMessageDrivenChannelAdapterForItems() {

    SqsMessageDrivenChannelAdapter adapter =
        new SqsMessageDrivenChannelAdapter(amazonSqs, "aws-sqs-queue");
    adapter.setOutputChannelName("in-channel");
    return adapter;
  }

  @ServiceActivator(inputChannel = "in-channel",
      poller = @Poller(fixedRate = "5000" , maxMessagesPerPoll = "1"))
  public void sqsMessageProcesser(Message<?> receive) throws ProcesserException {
  logger.info("--- inside sqsMessageProcesser---")
  // db transactions.
}
...