首页 > 其他分享 >阿里mns超大消息传输

阿里mns超大消息传输

时间:2023-06-01 15:07:24浏览次数:40  
标签:MNS 示例 超大 mns 传输 消息 64K publicvoid OSS


超大消息传输

更新时间:2016-11-23 17:16:08



问题背景

阿里云消息服务MNS的队列的消息大小最大限制是64K,这个限制基本能够满足在正常情况下消息作为控制流信息交换通道的需求。但是,在某些特殊场景下,消息数据比较大时,就只能采用消息分片的方式。

那么如何能够基于MNS,又不做消息切片,传递大于64K的消息呢?解法是有的。

解决方案

1.生产者在往MNS 发送消息前,如果发现消息体大于64K,则先将消息体数据上传到OSS上;

2.然后,生产者把数据对应的Objcet信息作为消息发送到MNS上;

3.消费者从MNS队列里读取消息,判断消息内容是否为OSS的Object信息;

4.如果消息内容是OSS的Object信息,则从OSS下载对应的object内容,并作为消息体返回给上层程序;

5.对于大小小于64K的消息,仍然直接走MNS。

具体过程如下图所示:

阿里mns超大消息传输_java

程序实现

大消息示例代码提供了上述方案的一个Java语言版实现。主要功能都封装成类:BigMessageSizeQueue

BigMessageSizeQueue提供的public方法如下:


1. publicBigMessageSizeQueue(CloudQueue cq,OSSClient ossClient,String ossBucketName)
2. //构造函数,cq为普通的mnsqueue对象,ossClient和ossBucketName包含了大消息中转的oss region和bucket
3. publicMessage putMessage(Message message)// 发送消息
4. publicMessage popMessage(int waitSeconds)// 接收消息
5. publicvoid deleteMessage(String receiptHandle)//删除消息
6. publicvoid setBigMessageSize(long bigMessageSize)//设置大消息的阈值(大于这个值的消息会走OSS),默认64K;
7. publicvoid setNeedDeleteMessageObjectOnOSSFlag(boolean flag)// 设置是否需要删除OSS上的消息,默认yes;

具体使用示例代码请参考附件中Demo.java中的代码。

注意事项

1.大消息主要消息网络带宽,用该方案发送大size消息时,生产者和消费者的网络带宽可能会是瓶颈。

2.大消息网络传输时间较长,受网络波动影响的概率更大,建议在上层做必要的重试。

标签:MNS,示例,超大,mns,传输,消息,64K,publicvoid,OSS
From: https://blog.51cto.com/u_8400305/6394351

相关文章

  • 制造业图纸经常外发供应商 如何安全外发并提高传输效率?
    制造业是我国的重要产业,在日常经营发展过程中,经常需要和企业内部、合作厂商、上下游供应链之间频繁的发送设计图纸等一些敏感的文件内容。比如很多汽车制造业企业,均已在企业内部通过实施PLM系统(ProductLifecycleManagement,产品生命周期管理系统),实现了对组织内产品研发过程和产......
  • 玩转服务器之数据传输篇:如何快速搭建FTP文件共享服务器
    FTP文件共享服务器介绍FTP服务(FileTransferProtocol,FTP)是最早应用于主机之间数据传输的基本服务之一,是目前使用最广泛的文件传送协议。FTP文件共享服务器在日常办公中可以实现多人之间文件的传递和共享,极大提高协同办公的效率。Vsftpd是一款在Linux发行版中最受推崇的FTP服务......
  • 肖 sir____ 传输平台项目讲解____整理
    简历项目参考: 项目名称:传输通(app)项目描述:传输通是一款用于公司内部以传输文件为主的软件,支持在线聊天、视频通话、点对点断电续传文件、共享文件等多种功能的一款通信软件。我主要负责文件传输的模块。测试工具:svn、禅道、Fiddler、monkey、Solopi、JMeter、QNET、Postman......
  • Android File Transfer for mac安卓文件传输工具
    AndroidFileTransferforMac是一款非常有用的软件,它提供了很多独特的功能,使得从Android设备向Mac电脑传输文件变得轻而易举。无论是从一个设备向另一个设备传输文件,还是管理Android设备上的文件,该软件都是一个很好的选择。如果您正在寻找一种简单而可靠的方法来传输文件,那么And......
  • wireshark分析tcp传输之文件上传速率问题
    在网络性能问题排查思路那一节里,我提到了查看系统网络瓶颈的方法以及排查丢包问题的手段。但就此分析网络问题还不够精细,有时网络资源并没有达到瓶颈,或者并没有丢包产生,但是网络传输速率就是很慢,或者有丢包产生,但无法知道丢包的详细过程,无法知道整个tcp传输过程的具体情况。如何......
  • TCP传输视频如何分包?
    TCP(传输控制协议)是一种面向连接的、可靠的传输层协议,用于在计算机网络上可靠地传输数据。TCP的设计目标是提供高可靠性、有序性和流量控制的数据传输。TCP的一般工作原理:建立连接:在进行数据传输之前,发送方和接收方需要通过三次握手建立TCP连接。握手过程中,双方交换并确认初始序列号......
  • https和http的区别?https传输的过程是怎样的
    http和https的区别是否加密:HTTPS是HTTP协议的更加安全的版本,通过使用SSL/TLS进行加密传输的数据;连接方式不同:HTTP(三次握手)和HTTPS(三次握手+数字证书)连接方式不一样;端口不同:HTTP默认的端口是80和HTTPS默认端口是443https的验证过程首先客户端向服务器发起请求......
  • 如何把“困在”内网的数据释放,进行安全的传输呢?
    互联网大时代,数据的生产使用与互联网紧密相关,但数据安全和网络安全却既有联系又互不相同。数据安全和网络安全的突出区别是核心主体不同,数据安全关注的数据全生命周期的安全,而网络安全则是侧重保障网络体系和网络环境的安全性。在数据传输环节,企业主要面临网络攻击和数据泄露等......
  • 安卓设备无法在苹果电脑上进行文件传输?安卓设备无法识别?
    很多朋友想用安卓手机在苹果电脑上进行文件传输?但是由于 MacOSX本身并不支持MTP协议,所以通过USB将Android设备连接到Mac电脑上是无法识别的,更别说读取里面的文件了...此时,你需要用到一个安卓文件传输助手—AndroidFileTransfer!AndroidFileTransfer使用非常简单,只......
  • 计组(二)寄存器传输级微操作流程
    ......