Wskaźnik ankiet konsumenckich z Akka, SQS i Camel

Projekt, nad którym pracuję, wymaga czytania wiadomości z SQS i zdecydowałem się użyć Akki do dystrybucji przetwarzania tych wiadomości.

Ponieważ SQS jest wsparciem dla Camela i istnieje wbudowana funkcjonalność do użycia w Akka w klasie Consumer, wyobrażałem sobie, że najlepiej byłoby zaimplementować punkt końcowy i odczytywać wiadomości w ten sposób, chociaż nie widziałem wielu przykładów takich osób.

Moim problemem jest to, że nie mogę wystarczająco szybko sondować mojej kolejki, aby moja kolejka była pusta lub prawie pusta. To, co pierwotnie uważałem, to to, że mogę nakłonić Konsumenta do otrzymywania wiadomości przez Camela z SQS w tempie X / s. Stamtąd mógłbym po prostu stworzyć więcej konsumentów, aby uzyskać tempo, w jakim potrzebowałem przetwarzanych wiadomości.

Mój konsument:

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)
  }
}

Jak pokazano, ustawiłemdelay=1 jak również&maxMessagesPerPoll=10 aby poprawić częstotliwość wiadomości, ale nie jestem w stanie wywołać wielu klientów z tym samym punktem końcowym.

Przeczytałem w dokumentach, żeBy default endpoints are assumed not to support multiple consumers. i uważam, że dotyczy to również punktów końcowych SQS, ponieważ pojawienie się wielu konsumentów da mi tylko jednego konsumenta, który po uruchomieniu systemu na minutę, komunikat wyjściowy toCount for actor: x zamiast innych, które wychodząCount for actor: 0.

Jeśli to w ogóle jest użyteczne; Jestem w stanie odczytać około 33 wiadomości / sekundę dzięki tej bieżącej implementacji na pojedynczym kliencie.

Czy jest to właściwy sposób na czytanie wiadomości z kolejki SQS w Akka? Jeśli tak, czy mogę skorygować to na zewnątrz, aby zwiększyć tempo korzystania z wiadomości bliżej 900 wiadomości na sekundę?

questionAnswers(2)

yourAnswerToTheQuestion