我有一个小型 Rep 服务器,我可以使用以下代码成功向它发送消息:
import akka.actor.Actor
import akka.zeromq._
import org.zeromq.ZMQ
import akka.util.ByteString
class Sender extends Actor {
override def preStart(): Unit = {
val context = ZMQ.context(1)
val socket = context.socket(ZMQ.REQ)
socket.connect ("tcp://127.0.0.1:1234")
socket.send("test".getBytes(), 0)
println("Sent!")
//val reqSocket = ZeroMQExtension(context.system).newReqSocket(
// Array(Connect("tcp://127.0.0.1:1234")))
//reqSocket ! ZMQMessage(ByteString("test"))
}
def receive : Receive = {
case _ =>
}
}
但是,如果我改用注释掉的部分(并注释掉 def 中的所有其他内容),那么服务器将无法检测到任何消息。我应该在使用时使用其他类型的程序来发送消息ZeroMQExtension
吗?我正在使用 ZeroMQ 2.2.0 版。
作为参考,这里是服务器代码:
import akka.actor._
import akka.zeromq._
class ReplyActor extends Actor {
def receive = {
case _ =>
println("Received something!")
}
}
object Replyer extends App {
val system = ActorSystem("zmq")
val serverSocket = ZeroMQExtension(system).newRepSocket(
Array(Bind("tcp://127.0.0.1:1234"),
Listener(system.actorOf(Props[ReplyActor]))))
}