我有一个actor在preStart上绑定(bind)一个端口,然后期待Tcp.Bound消息。然后,它将等待Tcp.Connected发生。这个Actor没有向其创建者提供任何东西,所以我想接收Tcp消息和/或模拟Tcp管理器到目前为止,我尝试将我的TestKit探测器订阅到tcp消息。除此之外,我希望创建一个可以覆盖管理器的类,但仍然不知道该怎么做。我正在使用Java8和JUnit5。@OverridepublicvoidpreStart(){this.connection=Tcp.get(getContext().getSystem()).manager();this.conne
我对AkkaTCPIO有奇怪的行为,问题是连接重置,由于从处理程序或Terminating处理程序显式调用TcpMessage.abort()。对等端未收到Tcp.ConnectionClosed事件。示例:接收处理程序@OverridepublicvoidonReceive(Objectmsg)throwsException{if(msginstanceofTcp.ConnectionClosed){log.info("ServerConnectionClosed:{}",msg);getContext().stop(getSelf());}elseif(msginstanceofT
我正在尝试使用akka-streams的Tcp客户端向数据库发送查询,但我不明白我错过了什么。所以我有两种类型Query和Response可以完美地转换为akka的ByteString或从ByteString转换。因此,我正在使用valconn=Tcp().outgoingConnection("localhost",28015)创建客户端连接,这为我提供了一个Flow[ByteString,ByteString,Future[OutgoingConnection]],到目前为止一切顺利。所以我假设源是我对查询的请求,我找不到用查询源提供此流程的最佳方法,而是像Source(Futur
我有2个系统:系统1正在运行akka和HAProxy,系统2正在运行向akka发出请求的REST组件。Akka在系统1的端口4241上运行。当没有HAProxy时,系统2能够连接到系统1。我在系统1上安装HAProxy后,从系统2到系统1的请求出错,日志如下:ERROR[deal-akka.actor.default-dispatcher-18]EndpointWriter-droppingmessage[classakka.actor.ActorSelectionMessage]fornon-localrecipient[Actor[akka.tcp://akkaSystemName
在下面的代码中GSMmockunbound永远不会记录,即使“禁用”消息已发送到服务器。如何正确解除绑定(bind)akkatcp服务器?classGsmRouterextendsActor{importTcp._importcontext.systemvalname=this.getClass().getName()vallogger=LoggerFactory.getLogger(name)defreceive={case"enable"=>IO(Tcp)!Bind(self,ConfigurationUtils.gsmRouterAddress)case"disable"=>IO
我有一个akka集群项目:https://github.com/roclas/akka-distributed-hash它基本上是一个跨集群节点的分布式HashMap。我希望能够读取(使用tcpdump或wireshark或类似的东西)在不同虚拟机中的参与者之间交换的消息。我该怎么做?进行TCP转储时,我只看到“集群消息”,但看不到不同虚拟机中不同参与者交换的消息。如果我在端口2551上启动一个节点:sbt"run2551"(将成为主节点)和端口2552上的另一个节点:sbt"run2552"当我这样做时实际上发生了什么?:curl-XPUThttp://localhost:8551-
我正在尝试使用Akka流构建一个简单的tcp服务器。Tcp().bind(props.host,props.port).to(Sink.foreach(_.handleWith(handler))).run().onComplete{caseSuccess(i)=>logger.info(s"Serverisboundat${props.host}:${props.port}")caseFailure(e)=>logger.error("Serverbindingfailure",e)}我想一次允许最多一个连接。为此,我将以下行添加到我的application.conf文件中。akka
在Akka中有什么方法可以像在Erlang中那样使用{packet,4}实现数据包框架?数据包看起来像这样:4byteslengthinbigendian|body...例如:00000005HELLO0005WORLD将是两个数据包“HELLO”和“WORLD”,但它们被作为一个数据包接收。或者00000005HELL现在Akka接收到这8个字节,但还缺少一个字节,它将在下一次调用“接收”时接收问题是我的Actor的接收总是被部分或全部请求调用,但我只想在接收中获得“body”部分,并且只有在它被完全接收时。因此,它所需要的只是首先读取这4个字节,然后等待读取其他N个字节(N=4字节
在学习如何使用akkaI/O时,我正在尝试在akkai/o之上实现一个简单的协议(protocol),并遵循文档here.但是在我的gradle文件中,我使用的是2.3.9版本,如下所示dependencies{compilegroup:'org.slf4j',name:'slf4j-log4j12',version:'1.7.7'compilegroup:'com.typesafe.akka',name:'akka-actor_2.11',version:'2.3.9'compilegroup:'com.typesafe.akka',name:'akka-contrib_2.11',
使用Scala2.10和Akka2.3.4,我组装了一个简单的代理服务器,它接受传入的TCP连接,然后将这些消息代理到远程服务器。一切都在使用纯文本,但我坚持使用SSL。简而言之,这就是我为传入连接启动非安全服务器的方式:valserver=system.actorOf(Props(newLegacyTCPServer),name="my-tcp-server")implicitvalbindingTimeout=Timeout(1.second)importsystem.dispatcher//executioncontextforthefuturevalboundFuture=IO