`

activemq BlobMessage对文件中转的封装

阅读更多

 

 

举个例子来说,典型的使用步骤:

发送端:

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配置文件详解** Apache ActiveMQ 是一个开源的消息中间件,它实现了多种消息协议,如JMS(Java Message Service)和AMQP(Advanced Message Queuing Protocol),并且广泛应用于分布式系统中,提供可靠的...

    JMS 使用 ActiveMQ 传送文件

    博主可能讨论了如何配置ActiveMQ服务器,以及如何通过JMS API创建消息,将文件内容封装到消息中,然后通过网络发送给其他应用程序进行接收和解包。 **标签:“源码 工具”** “源码”标签暗示这篇博文可能包含了...

    ActiveMQ连接池完整封装实例工具类

    本文将详细介绍如何实现一个ActiveMQ连接池的完整封装实例工具类,并探讨其背后的设计思想。 首先,我们需要了解JMS(Java Message Service)接口,它是Java平台中用于创建、发送、接收和读取消息的标准API。...

    自己实现的ActiveMQ连接池和新版本ActiveMQ自带的连接池,封装好的工具类,可直接使用

    文件zc-activemq可能是包含了作者实现的连接池代码、配置示例或其他相关文档。为了更好地利用这个资源,你需要阅读和理解代码实现,确保其符合你的系统需求。同时,测试是验证连接池性能和稳定性的关键步骤,应该在...

    activemq的常用封装 包括和spring结合的封装

    本篇文章将深入探讨ActiveMQ的常用封装以及如何将其与Spring框架结合使用,以便更好地理解和应用在实际项目中。 首先,ActiveMQ的封装主要是为了简化消息的发送和接收过程,提高开发效率。通常,我们会创建一个辅助...

    activeMQ在文件上传的应用

    在文件上传应用中,ActiveMQ可以作为数据传输的桥梁,实现文件的异步传输,提高系统的性能和可扩展性。 在描述中提到的"activeMQ与uploadify整合",是指将ActiveMQ与Uploadify插件结合使用,以实现高效、流畅的文件...

    ActiveMQ与spring整合封装

    本篇将详细讲解如何将ActiveMQ与Spring进行整合封装,实现高效、便捷的消息服务。 首先,ActiveMQ与Spring的整合主要基于Spring的JMS(Java Message Service)支持。Spring通过`ConnectionFactory`和`Destination`...

    ActiveMQ消息发送接收封装实现及定时测试.

    实现了ActiveMQ的初步封装,比较适合新手入门学习,简单明了

    ActiveMQ使用SSL加密文件Demo

    **ActiveMQ 使用 SSL 加密文件 Demo** ActiveMQ 是一个开源的消息代理服务器,它遵循 Java Message Service(JMS)规范,提供了可靠的消息传递功能。在实际的生产环境中,为了确保消息传输的安全性,我们通常会使用...

    简单的activemq点对点的同步消息模型

    配置文件通常位于`conf`目录下的`activemq.xml`。 3. **创建队列**:在ActiveMQ中,可以通过管理控制台或编程方式创建队列。例如,通过JMS API,可以创建一个`Queue`对象来表示队列,并向其发送和接收消息。 4. **...

    activemq 接收文件流 C#

    你可以通过NuGet包管理器安装Apache.NMS和Apache.NMS.Stomp这两个包,它们分别提供了对ActiveMQ的基础支持和STOMP协议的支持。 接下来,我们讨论如何使用C#接收文件流。接收文件流主要涉及以下步骤: 1. 创建连接...

    activemq消息的发送与接受封装的工具类

    activemq消息的发送与接受封装的工具类,只要你导入jar包

    ActiveMQ封装的包

    ActiveMQ封装,支持异步线程收发,断线自动恢复,消息持久化以及p2p&s/p消息传递,对目前ActiveMQ封装非常完整和优良。

    文档对应activemq和配置文件

    这个压缩包文件“文档对应mq和配置文件”很可能包含了与ActiveMQ相关的详细文档和配置文件,帮助用户理解和配置这个强大的消息代理。 在了解ActiveMQ时,首先需要知道它的核心概念: 1. **消息**:消息是数据的...

    activeMQ-cpp 测试文件

    总之,ActiveMQ-cpp是ActiveMQ消息中间件的C++客户端,它允许开发者在C++环境中利用ActiveMQ的功能,如发布/订阅、点对点通信等。在完成安装和配置后,通过编写和运行测试代码,可以验证activeMQ-cpp库是否已正确...

    .net 封装的ActiveMq消息列队

    .NET 封装的ActiveMQ消息队列是一种在.NET环境中对Apache ActiveMQ消息中间件进行抽象和简化的方法,以便开发者能够更方便地在.NET应用中使用ActiveMQ的功能。ActiveMQ是业界广泛使用的开源消息代理,它遵循Java消息...

    jmx监控activeMQ监控

    在ActiveMQ中开启jmx监控需要进行一些配置,包括编辑bin/activemq文件和conf/activemq.xml文件,以及设置jmx.password和jmx.access文件的权限。在配置过程中,需要注意jmxremote.port和rmi.port的设置,确保它们不...

    activeMq点对点和发布/订阅模式demo

    3. 配置文件:可能包含了服务器配置或连接工厂配置,说明如何设置ActiveMQ服务器和客户端连接参数。 4. 运行与测试:可能包含运行这些示例的指南,帮助用户理解如何启动、运行和验证示例。 通过分析和运行这些示例...

    activeMQ点对点map消息

    3. 创建JMS连接工厂和目的地:在ActiveMQ的配置文件(如`conf/activemq.xml`)中,定义JMS连接工厂和队列。例如,可以创建一个名为`P2PConnectionFactory`的连接工厂和一个名为`myQueue`的队列。 然后,在两个项目...

    Linux下activeMQ的启动和停止.docx

    2. 权限问题:确保执行启动和停止命令的用户有对ActiveMQ目录和文件的适当权限。 3. Java环境:ActiveMQ依赖于Java运行,确保系统已经安装了Java,并且`JAVA_HOME`环境变量指向正确的Java版本。 总的来说,管理...

Global site tag (gtag.js) - Google Analytics