【问题标题】:what is a good design pattern for connecting a sender and a receiver?连接发送者和接收者的良好设计模式是什么?
【发布时间】:2012-03-06 20:24:07
【问题描述】:

我正在尝试实现连接发送方和接收方以进行文件传输的逻辑,即发送方和接收方之间的握手。我想象的基本高级工作流程是......

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

*注意:一个发送者只能有一个接收者,这意味着只有一个接收者可以“下载”发送者正在发送的文件

我正在使用Jetty Continuations 对服务器进行长轮询,这使得处理异步事件变得容易,但我不确定如何处理设计方面。对于上述工作流程,* 握手 * 发送方和接收方之间的良好设计模式是什么?

【问题讨论】:

    标签: java design-patterns jetty


    【解决方案1】:

    我的 goto 策略是使用 JMS 队列来解决这类问题。那里有各种各样的实现,有很多选择。您可能会专门寻找“带外”文件传输,这基本上就是您所描述的:从指向要由客户端下载的文件的服务器传输令牌(消息)。此外,这符合您的 1 个接收器下载要求。可以将 JMS 队列配置为通过事务锁定仅允许每条消息使用一个客户端。

    不知道这是否真的回答了你的问题,但它可能是一个开始的地方。

    编辑:

    如果您是 JMS 的新手,最好从 ActiveMQ 开始:

    Homepage link

    Doc referencing out of band file transfer 您可能希望实现自己的“BlobMessage”,或者只使用常规消息并处理通过它传递的 url。

    Oracle JMS 1.1 Tutorial

    JMS 有很多可用的资源,因为它是一个非常古老的标准。

    希望这会有所帮助!

    【讨论】:

    • 文件的实际发送已经实现并且可以工作。我对发送方/接收方之间的握手更感兴趣
    • 再次尝试消化您的问题,您是在问下载给定文件后使用什么策略?
    • 不...我正在尝试弄清楚如何设计发送者和接收者之间的握手 * 在 * 传输开始之前
    • 啊,那我的回答成立。我会使用 jms 队列来处理使用消息(又名令牌)的握手......然后使用您给定的实现“带外”下载文件。
    • 在响应中添加了一些资源链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多