0
假設下面的一段代碼:Akka ZeroMQ - 獲取套接字地址的任何方式?
class MQActor extends Actor {
// Bind on port 0... Technically this should pick a free port
val pubSocket = context.system.newSocket(SocketType.Pub, Bind("tcp://127.0.0.1:0"))
def receive = {
// ...
}
}
我的問題是:
1)它是正確的指定端口0索要任何可用的端口上的插座?
2)假設1)的作品,我怎麼能知道哪個端口插座被綁定到?
3)如1)不工作和/或2)是不可能的,如何可以結合到任何可用的端口?
在此先感謝!
比利
感謝您的回答! 基本上,我的應用程序將在運行中創建1個或多個MQ。無法在運行時間之前確定此編號,並且出於安全原因,這些MQ必須是不同的(即一個MQ不起作用)。我不在乎他們綁定哪個端口,但我顯然需要一種方法來查詢它。 是的,我能找到一個未使用的端口自己,但我得到了理解,阻斷代碼不應該在一個演員的初始化中使用,我不知道的方式做到這一點無需反覆試圖綁定一個ServerSocket直到它工作。對此有何建議? – user510159
您可以使用此處所示的技術:https://github.com/akka/akka/commit/cb86591656629f1d69d5c2a558eab5420dd49042我們已經因爲刪除它,因爲我們找到了一個更好的解決方案在內部,但它似乎正確的事情找你,AFAICT應該不阻擋。 –
輝煌的解決方案!我沒有想到它......我實現了類似的東西,它似乎工作!我的印象是socket.close()阻塞,但... – user510159