2017-01-26 6 views
0

Iv видели это common-aws on github для того, как использовать его, и это их пример (только для отправителя причиной этого является то, что мне нужно):Как правильно отправить сообщение в очередь amazon sqs с scala?

import com.amazonaws.services.sqs.AmazonSQSAsyncClient 
import com.pellucid.wrap.sqs.AmazonSQSScalaClient 
import com.mfglabs.commons.aws.sqs._ 

val sqs = new AmazonSQSScalaClient(new AmazonSQSAsyncClient(), ec) 
val builder = SQSStreamBuilder(sqs) 

val sender: Flow[String, SendMessageResult, Unit] = 
    Flow[String].map { body => 
    val req = new SendMessageRequest() 
    req.setMessageBody(body) 
    req.setQueueUrl(queueUrl) 
    req 
    } 
    .via(builder.sendMessageAsStream()) 

, но я получаю некоторые ошибки, и я действительно не понимаю, этот пример, мне нужно создать func, который принимает список классов case, сериализовать каждый из списка в json и отправить его в очередь sqs ... thats it, так что это то, что я пробовал до сих пор:

val queueUrl = "the url to my queue" 

//the objects here are of case class type ObjectUploadRequest 
val listOfObjects = List(Obj1, Obj2, Obj3, Obj4, Obj5) 

def pushListToSQS(listOfObjectsRequests: List[ObjectUploadRequest]): Future[SendMessageRequest] = { 
    listOfObjectsRequests.map(objReq => { 
    val ser = swrite(objReq) 
    val sender: Flow[String, SendMessageResult, Unit] = 
     Flow[String].map { body => 
     val req = new SendMessageRequest() 
     req.setMessageBody(body) 
     req.setQueueUrl(queueUrl) 
     req 
     }.via(builder.sendMessageAsStream()) 
    }) 
} 

и im получение этой ошибки:

enter image description here

был бы признателен, если кто-то может помочь, спасибо

ответ

0

Если вы не возражаете, используя старый добрый AWS Java SDK и его синхронное клиент SQS, то это работает для меня:

import com.amazonaws.services.sqs.AmazonSQSClient 
import com.amazonaws.services.sqs.model.SendMessageRequest 

val sqs = new AmazonSQSClient() 

listOfObjects.foreach { obj => 
    val json = // convert obj to json 

    sqs.sendMessage(new SendMessageRequest() 
     .withQueueUrl("your queue url") 
     .withMessageBody(json)) 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^