我实现了一个简单的确认模式,它的工作原理如下:
客户端接收器线程发送带有ackRequest
的{{1}}将ackID保存在带有回调的双向链表中,然后将消息发送给客户端。客户收到邮件后,会回复ackID
并与ackResponse
相关联。当客户端接收器线程收到ackID
时,它会在队列中查找ackResponse
并执行回调(如果找到)。
如果线程想要来自客户端的确认,反之亦然,这可以正常工作:
ackID
但是客户端接收器线程#1不可能从客户端#2获得确认,因为确认消息将在客户端接收器线程#2中结束而不是#1:
CLIENT1 <---- ackRequest (ID=1234) ----- CLIENT1 THREAD
\- add 1234 to queue with callback
CLIENT1 ----- ackResponse (ID=1234) ----> CLIENT1 THREAD
\- look 1234 in queue up
\- execute callback
我不知道如何解决这个问题,我的一个想法是全局确认队列,但这对我来说听起来不错。
感谢任何帮助。