【问题标题】:Best protocol to send huge file over unstable connection通过不稳定连接发送大文件的最佳协议
【发布时间】:2018-06-08 09:30:20
【问题描述】:

用例:需要通过队列从一台服务器向另一台服务器发送一个巨大的文件(100 MB 的倍数)。

目前,我正在使用 Activemq Artemis 服务器在输入流的帮助下通过 tcp 协议将大文件作为 ByteMessage 发送,重试间隔为 -1 以进行无限制的故障转移重试。这里的主要问题是消费者端点连接大多不稳定,即由于移动性而与网络断开连接。

因此,当在队列中发送文件时,如果连接被断开并且重新连接的代理应该从事务中断的地方恢复(例如)同时将 300 mb 的文件传输到消费者队列,假设 100 mb 的一部分被转移到消费者队列server ,然后连接断开并在一段时间后重新连接,然后进程应该从传输剩余的 200 mb 而不是整个 300mb 再次恢复。

我的问题是哪一个是在 ActiveMQ Artemis 中实现它的最佳协议(tcp、Stomp 和 openwire)和最佳实践(blobmessage、bytemessage 输入流)

【问题讨论】:

    标签: jms wildfly-10 activemq-artemis


    【解决方案1】:

    Apache ActiveMQ Artemis 支持通过网络传输的“大型”消息(使用 Netty TCP)。这在the documentation 中有介绍。注意:此功能仅适用于“核心”客户端。它不适用于 STOMP 或 OpenWire。它也不支持“恢复”功能,即在断开连接的情况下,消息传输将从中断处继续。

    我的建议是在单个消息中以较小的块发送消息,这样在网络缓慢或断开连接的情况下更容易处理。消息可以与相关 ID 或其他内容组合在一起,然后最终客户端可以获取消息的各个部分,并在收到所有消息后将它们组合在一起。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-05
      • 2019-10-27
      • 2011-02-20
      • 1970-01-01
      • 2019-06-24
      • 2012-05-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多