小编Dav*_*ria的帖子

是否可以在Actor内部发出Akka HTTP核心客户端请求?

下面是一个简单的actor,它需要进行HTTP调用以从API接收数据.根据Akka HTTP核心请求级客户端API,只需隐式ActorSystemActorMaterializer需要.

class MyActor extends Actor {

  import context.system
  implicit val materializer = ActorMaterializer()

  override def receive: Receive = {
    case _ => {
      val responseFuture: Future[HttpResponse] = Http().singleRequest(HttpRequest(uri = "http://akka.io"))
      responseFuture onComplete {
        case Success(res) => println(res)
        case Failure(t) => println("An error has occured: " + t.getMessage)
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,在尝试编译应用程序时,我收到以下错误消息:

Error:(18, 48) ambiguous implicit values: both value context in trait Actor of type => akka.actor.ActorContext and method system in trait ActorContext …
Run Code Online (Sandbox Code Playgroud)

scala akka akka-http

7
推荐指数
1
解决办法
4078
查看次数

Akka流如何不断实现?

我使用Scala中的Akka Streams使用AWS Java SDKAWS SQS队列进行轮询.我创建了一个ActorPublisher,它以两秒的间隔使消息出列:

class SQSSubscriber(name: String) extends ActorPublisher[Message] {
  implicit val materializer = ActorMaterializer()

  val schedule = context.system.scheduler.schedule(0 seconds, 2 seconds, self, "dequeue")

  val client = new AmazonSQSClient()
  client.setRegion(RegionUtils.getRegion("us-east-1"))
  val url = client.getQueueUrl(name).getQueueUrl

  val MaxBufferSize = 100
  var buf = Vector.empty[Message]

  override def receive: Receive = {
    case "dequeue" =>
      val messages = iterableAsScalaIterable(client.receiveMessage(new ReceiveMessageRequest(url).getMessages).toList
      messages.foreach(self ! _)
    case message: Message if buf.size == MaxBufferSize =>
      log.error("The buffer …
Run Code Online (Sandbox Code Playgroud)

scala amazon-sqs akka akka-stream aws-sdk

5
推荐指数
1
解决办法
1329
查看次数

标签 统计

akka ×2

scala ×2

akka-http ×1

akka-stream ×1

amazon-sqs ×1

aws-sdk ×1