【发布时间】:2022-08-19 14:39:12
【问题描述】:
如何取消最后发送的消息?
我有这个设置
这个想法是客户可以要求不同类型的大数据。 服务器从客户端读取请求并回答确认。 一旦它的数据准备好,它就会通过另一个套接字推送它。 当连接多个客户端时,这将启用服务器端的排队任务。 但是,如果客户端决定不再需要数据,它可以向服务器发送取消消息。
我正在使用 asyncio.Queue 对消息进行排队,因此我可以轻松清空队列,但是,我不知道如何删除推/拉管道中的消息以释放通道?
https://zguide.zeromq.org/docs/chapter2/ 中的终止开关示例(图 19 - 带有终止信号的并行管道)用于结束进程。我只是想取消它。
我的想法是关闭服务器端的套接字并重新打开它,但即使将 linger 设置为 0,消息也不会被丢弃。
编辑:消息确实被丢弃了,但我觉得解决方案是错误的。