gpt4 book ai didi

scala - 使用 Akka Http 进行多个绑定(bind)

转载 作者:行者123 更新时间:2023-12-04 19:00:07 26 4
gpt4 key购买 nike

鉴于 documentation,使用 akka http 绑定(bind)到端口然后路由传入连接很容易。 .

一个没有解决的问题是如何为不同的路由绑定(bind)多个端口。如果我有多种规范:

val route1 : Flow[HttpRequest, HttpResponse,_] = ???
val interface1 : String = ???
val port1 : Int = ???

val route2 : Flow[HttpRequest, HttpResponse,_] = ???
val interface2 : String = ???
val port2 : Int = ???

这些是否应该与一个 HttpExt 绑定(bind)? ?
implicit val actorSystem : akka.actor.ActorSystem = ???

val httpExt = akka.http.scaladsl.Http()

httpExt.bindAndHandle(route1, interface1, port1)
httpExt.bindAndHandle(route2, interface2, port2)

或者,是否应该使用不同的 HttpExt用于每个绑定(bind)?
Http().bindAndHandle(route1, interface1, port1)
Http().bindAndHandle(route2, interface2, port2)

如果其中任何一个是有效的,那么使用一种方法而不是另一种方法有什么影响吗?

提前感谢您的评论和回复。

最佳答案

一点源代码调查显示以下内容。

Here我们看看 Http() 会发生什么称呼。 Http对象扩展 ExtensionId[HttpExt] trait,负责向actor系统注册附加功能。
Thissuper称呼。我们可以看到它使用 this引用,在我们的例子中是一个对象引用(重要)。
Here是当我们调用 Http() 时实际发生的情况.这段代码做的第一件事是检查扩展是否已经注册。请记住,ext在我们的例子中是一个对象,所以第一个之后的任何后续调用都不会做任何事情。

这意味着您的任何一种方法都可以使用相同的方法,但 imo 使用一个 httpExt考虑到底层系统的实际工作方式,它就不那么令人困惑了。

关于scala - 使用 Akka Http 进行多个绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39391387/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com