我如何通过 2 个 IP 和端口接受 quickfix 接受器会话?

how can i accept quickfix acceptor sessions over 2 IPs and ports?

这用于内部和外部 DNS 设置。所以我的配置文件说:

connectionType=acceptor
SenderCompID=provider
TargetCompID=client1
SocketAcceptAddress=X.X.X.X
SocketAcceptPort=1901

然后

connectionType=acceptor
SenderCompID=provider
TargetCompID=client2
SocketAcceptAddress=url.mapping.to.X.X.X.X
SocketAcceptPort=1902

并且接受者不会 运行 错误:

quickfix.RuntimeError: java.net.BindException: Cannot assign requested address: bind

SenderCompID=provider, TargetCompID=client1

两者是一样的。如果我没记错的话,Quicfix 通过 BeginString、SenderCompID、TargetCompID 识别一个唯一的会话。因此,如果 2 个会话的这些相同,您将收到错误消息。所以其中一个必须与另一个不同。

第二个问题是你为什么要这样做?这是为了故障转移吗?

答案是为所有客户端使用内部套接字地址,然后让 LAN 客户端使用内部 DNS "machine1",让外部客户端使用外部 DNS "remote.machine1.com"

因此配置如下所示:

connectionType=acceptor
SenderCompID=provider
TargetCompID=client1
SocketAcceptAddress=192.168.20.25
SocketAcceptPort=1901

connectionType=acceptor
SenderCompID=provider
TargetCompID=client2
SocketAcceptAddress=192.168.20.25
SocketAcceptPort=1901

每个客户端都在同一个端口上...