Частота опроса потребителей с помощью 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 сообщений в секунду?