我试图通过我的Scala应用程序将消息推送到SQS队列。尝试连接到SQS时收到以下错误:
ProducerRegistrar$$anonfun$receive$3.applyOrElse(CamelSupervisor.scala:159)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:425)
at akka.actor.ActorCell.invoke(ActorCell.scala:386)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:230)
at akka.dispatch.Mailbox.run(Mailbox.scala:212)
at akka.dispatch.ForkJoinExecutorConfigurator$MailboxExecutionTask.exec(AbstractDispatcher.scala:506)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:262)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:975)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1478)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104)
Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: aws-sqs://analyticsSandboxSQS?accessKey=<access>&secretKey=<secret> due to: No component found with scheme: aws-sqs
at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:475)
at akka.camel.internal.ProducerRegistrar$$anonfun$receive$3.applyOrElse(CamelSupervisor.scala:151)
... 9 more
我使用以下代码设置URI:
import akka.actor.{ Actor, ActorSystem, Props }
import akka.camel.{ Oneway, Producer }
class EventSenderSQS extends Actor with Producer with Oneway {
def endpointUri = "aws-sqs://queueName?accessKey=<access>&secretKey=<secret>"
}
我使用以下内容尝试发送消息:
val sys = ActorSystem("sys")
val eventsActor = sys.actorOf(Props[EventProducerSQS])
eventsActor ! "testMessage"
我使用的是akka-camel版本2.1.4,它应支持aws-sqs端点。
答案 0 :(得分:2)
堆栈跟踪显示您需要将camel-aws jar和aws-sdk jar放入类路径中。