我正在尝试实现连接发送者和接收者以进行文件传输、发送者和接收者之间的握手的逻辑。我想象的基本高级工作流程是......
Sender : prep for transfer, create token, wait for receiver to connect Receiver : access download URL using token, wait for sender to start sending Sender : confirm Receiver has connected / is waiting, send Receiver : receive
*注意:发送者只能有一个接收者,这意味着只有 1 个接收者可以“下载”发送者发送的文件
我正在使用Jetty Continuations用于长轮询服务器,这使得处理异步事件变得容易,但我不确定如何处理设计方面。对于上述工作流程,* 发送者和接收者之间的握手 * 来说,什么是好的设计模式?
最佳答案
我的转向策略是使用 JMS 队列来解决此类问题。有多种实现方式和大量选项。您可能会专门寻找“带外”文件传输,这本质上就是您所描述的:从服务器传输指向客户端要下载的文件的 token (消息)。此外,这也符合您的 1 个接收器下载要求。通过事务锁定,JMS 队列可以配置为仅允许每条消息有一个客户端。
不知道这是否真的回答了您的问题,但这可能是一个起点。
编辑:
如果您是 JMS 的新手,那么尝试一下 ActiveMQ 是一个不错的起点:
Doc referencing out of band file transfer 您可能想要实现自己的“BlobMessage”,或者只使用常规消息并处理通过它传递的 url。
有很多资源可用于 JMS,因为它是一个非常古老的标准。
希望这有帮助!
关于java - 连接发送者和接收者的良好设计模式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9591265/