Частота опроса потребителей с помощью Akka, SQS и Camel

Проект, над которым я работаю, требует чтения сообщений из SQS, и я решил использовать Akka для распространения обработки этих сообщений.

Поскольку SQS поддерживается Camel, а в Akka в классе Consumer имеется встроенная функциональность для использования, я подумал, что было бы лучше реализовать конечную точку и читать сообщения таким образом, хотя я не видел много примеров, когда люди это делали.

Моя проблема в том, что я не могу опрашивать свою очередь достаточно быстро, чтобы оставить мою очередь пустой или почти пустой. Первоначально я думал, что смогу получить Потребителя для получения сообщений через Camel от SQS со скоростью X / s. Оттуда я мог бы просто создать больше потребителей, чтобы получить скорость обработки сообщений.

Мой потребитель:

import akka.camel.{CamelMessage, Consumer}
import akka.actor.{ActorRef, ActorPath}

class MyConsumer() extends Consumer {
  def endpointUri = "aws-sqs://my_queue?delay=1&maxMessagesPerPoll=10&accessKey=myKey&secretKey=RAW(mySecret)"
  var count = 0

  def receive = {
    case msg: CamelMessage => {
      count += 1
    }
    case _ => {
      println("Got something else")
    }
  }

  override def postStop(){
    println("Count for actor: " + count)
  }
}

Как показано, я установилdelay=1 также как и&maxMessagesPerPoll=10 чтобы повысить скорость сообщений, но я не могу порождать несколько потребителей с одной и той же конечной точкой.

Я прочитал в документах, чтоBy default endpoints are assumed not to support multiple consumers. и я считаю, что это справедливо и для конечных точек SQS, так как порождение нескольких потребителей даст мне только одного потребителя, где после запуска системы в течение минуты, выходное сообщениеCount for actor: x вместо других, которые выводятCount for actor: 0.

Если это вообще полезно; Я могу читать примерно 33 сообщения в секунду с этой текущей реализацией для одного потребителя.

Это правильный способ чтения сообщений из очереди SQS в Akka? Если да, то есть ли способ заставить это масштабироваться наружу, чтобы увеличить скорость потребления сообщений до 900 сообщений в секунду?

Ответы на вопрос(2)

Ваш ответ на вопрос