使用zeromq,我基本上想做一个'REQ-multiple-REP'模式:客户端向服务器发送1条消息,然后服务器发送多个答复直到完成。 “多次答复”是给该客户:不是一般的发布。
我可以自己动手:拥有一个正常的REQ-REP套接字,当服务器收到请求时,它将创建一个新的PUB,并在回复客户端时用该PUB的地址进行回复,然后客户端将SUB服务器已经开始将消息放入其中的PUB。
但是那感觉很笨。有没有更好的办法?在此用例中,zeromq是否已有一些不错的选择?
您可能可以将XPUB / XSUB与REQ / REP配合使用。
这些可以永久设置,即客户端和服务器都位于同一XPUB / XSUB连接上。使用这种模式,客户端可以通过其XSUB套接字发送客户端唯一的订阅消息,服务器将读取并记住该消息。然后,客户端再次发送包含订阅消息的REQ作为请求的字段之一,服务器在REP上进行响应,并且所有其他服务器响应都使用订阅消息通过其XPUB发送到先前从客户端接收到的标签响应。所有其他未订阅的客户端将不会收到不适合自己的响应。
这仍然不是很优雅,但至少不是一直都在建立/拆除套接字连接。