由于JMS Streams的种种不足,限制了其用于传输大文件的功能。因此,ActiveMQ在JMS的基础上创建了一种新的消息类型------BlobMessage。
因为派生与JMS的Message对象,通过BlobMessage传输大文件可以利用ActiveMQ消息Broker的所有特性,如高可靠性、事务支持、发布订阅......
Blob Messages是通过带外传输(out-of-band transport)的机制来实现大文件传输的,在文件传输的过程中,通过http、ftp、scp或其他点对点的协议来进行文件的传输,同时,通过BlobMessage来传送控制信息以及文件的验证信息。其结构图如下:
由于JMS可以可靠的将控制信息传送到ActiveMQ Broker,同时ftp协议本身就支持断点续传,所以,文件简单的就可以发送到服务端,并且保存在服务端,当文件的消费端监听队列的队列就可以轻松的下载文件了,如果存在多个消费端,则可以通过JMS的发布订阅模式实现。
通过比较三种方案,第一种通过JMS Streams传输存在断点续传的问题,第二种方式则引入了额外的复杂度------分割文件和合并文件,复杂度相对较高,第三种Blob Messages对于开发者来说就和发送普通消息是一样的,只是服务端它依赖FTP Server来上传下载文件。经过比较可以发现,Blob Messages的方式更具备可用性。
最近一直在关注一些文件传输中间件的实现,想用ActiveMQ实现一些具体的功能。经过几周的ActiveMQ的学习,以及中间件必须一些功能。发现一些问题自己还是不能搞懂,希望网上一些,大牛拍一下砖,支持一下。1.在消息中间件的消息的路由的算法怎么实现的。
如A、B、C、D、E 五个节点上都是提供消息服务的 AMQ ,五个节点连通成一个网络,连接到 A
节点的客户端可以发消息到五个节点中的任意一个节点,AMQ 会自动寻找一条最佳路径传递消息到目标节点。如从A
发消息到D,有两条连通路径:A->B->C->D 和A->E->D,其中 A->E->D
经过的节点最少,该路径为最佳路径, AMQ 将根据此路径对消息进行传递。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)