举个例子来说,典型的使用步骤:
发送端:
1. 启动ActiveMQ时,也启动jetty(即activemq.xml中有import jetty.xml),此时jetty中运行了一个ActiveMQ自带的http文件服务器
2. 使用tcp://localhost:61616?jms.blobTransferPolicy.defaultUploadUrl=http://localhost:8161/fileserver/创建connection,然后创建session和producer
3. 使用如下代码发送文件:
BlobMessageblobMessage = session.createBlobMessage(file);
blobMessage.setStringProperty("FILE.NAME",file.getName());
blobMessage.setLongProperty("FILE.SIZE",file.length());
producer.send(blobMessage);
接收端比较简单,正常的使用jms接收到消息:
InputStream inputStream = blobMessage.getInputStream();
然后直接读取文件数据即可。文件名和文件大小可以从message的属性中拿到。
这个过程中ActiveMQ做了什么呢?
发送端:producer.send的时候,把文件通过http协议的PUT方法发到jetty中的fileserver(默认128K走http的chunk分片传输)。然后把http的url写入消息中。再把消息发送到broker。
接收端:接收到消息以后,发现是BlobMessage,拿到url,直接使用GET方法获取文件数据。处理完毕后,使用DELETE方法从fileserver删除文件。
BlobMessage支持3种文件中转方式:
FILE
要求client和broker在同一个机器或者使用同一个共享存储。发送文件的时候,把文件从本地写入到指定路径。接收文件的时候,把文件从此路径读出来。
HTTP
使用http的fileserver,PUT/GET/DELETE方法。ActiveMQ自带了简单的实现。就是前面场景中使用的方式。
FTP
使用一个独立的ftpserver作为文件中转方式。发送文件的时候,把文件发送到ftp服务器。接收文件的时候,从ftp把文件读取下来。
详见:http://activemq.apache.org/blob-messages.html
优势:消息处理与文件处理传输分开,极大的提高了文件传输的效率。而且可以使用类似jms协议的方式来处理文件发送。
劣势:FILE方式不太实用。HTTP和FTP方式都需要额外的fileserver。
相关推荐
自己实现的ActiveMQ连接池和新版本ActiveMQ自带的连接池,封装好的工具类,可直接使用,自己在网上找的时候好多都是纯Demo性质的,没有好的思想可以学习,希望我的劳动成果可以供你学习借鉴
ActiveMQ与spring整合进行封装,实现全注解开发,并且支持topic与queue两种模式无缝切换,对外提供统一的接口调用,简化操作。对连接池进行优化,容器实例动态生成。
activemq的常用封装 包括和spring结合的封装,直接用activemqHelper实用即可
实现了ActiveMQ的初步封装,比较适合新手入门学习,简单明了
自己实现的ActiveMQ连接池和新版本ActiveMQ自带的连接池,封装好的工具类,可直接使用
NULL 博文链接:https://jackyin5918.iteye.com/blog/2004298
文档对应activemq和配置文件
简单的activemq点对点的同步消息模型
ActiveMQ封装,支持异步线程收发,断线自动恢复,消息持久化以及p2p&s/p消息传递,对目前ActiveMQ封装非常完整和优良。
activeMQ与uploadify整合
activemq, Apache ActiveMQ镜像 欢迎来到 Apache ActiveMQis是一个高性能的Apache 2.0许可以消息代理和 JMS 1.1实现。正在启动要帮助你入门,请尝试以下链接:入门http://activemq.apache.org/version-
NULL 博文链接:https://itjiehun.iteye.com/blog/1321969
activemq-web-console的默认使用方式是通过在activemq.xml中导入jetty.xml配置一个jetty server来实现的...3.还有一个fileserver,用来支持通过activemq发送文件时的中转服务器。blob message时配置的http文件服务器。
使用C# 下activemq 接收数据流的例子
宜立方商城(淘淘商城) 包含 ActiveMQ dubbo SQL文件 关于商城的其它资源 请看我的资源发布 完整项目代码地址:https://github.com/steamyao/e3mall
activemq消息的发送与接受封装的工具类,只要你导入jar包
在安装好activeMQ 并且 装好activeMQ-cpp库,(可看我的教程),即可用此测试是否成功
刚接触activemq时写的一些demo,感兴趣的可以参考一下。。。
使用ActiveMQ实现了JMS的点对点的消息模型,将发送者和接受者分别放在了两个不同的项目中。
百度spring整合activemq 发现几乎都只是在xml文件配置固定的消息队列而且太麻烦。并没有根据需求进行动态生成主题和队列。本文档参考了纯粹的activemq java代码和百度上的demo,很简洁的实现了动态消息队列的生成和...