`
wang_ping001
  • 浏览: 88742 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ActiveMQ发送文件

阅读更多
  package com.unmi.jms;

  import java.io.File;

  import javax.jms.*;

  import javax.swing.JFileChooser;

  import org.apache.activemq.*;

  /**

  * 通过 ActiveMQ 发送文件的程序

  * @author Unmi

  */

  public class FileSender {

   /**

  * @param args

  * @throws JMSException

  */

  public static void main(String[] args) throws JMSException {

   // 选择文件

  JFileChooser fileChooser = new JFileChooser();

  fileChooser.setDialogTitle("请选择要传送的文件");

  if (fileChooser.showOpenDialog(null) != JFileChooser.APPROVE_OPTION) {

  return;

  }

  File file = fileChooser.getSelectedFile();

   // 获取 ConnectionFactory

  ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(

  "tcp://10.80.38.10:61616?jms.blobTransferPolicy.defaultUploadUrl=http://10.80.38.10:8161/fileserver/");

   // 创建 Connection

  Connection connection = connectionFactory.createConnection();

  connection.start();

   // 创建 Session

  ActiveMQSession session = (ActiveMQSession) connection.createSession(

  false, Session.AUTO_ACKNOWLEDGE);

   // 创建 Destination

  Destination destination = session.createQueue("File.Transport");

   // 创建 Producer

  MessageProducer producer = session.createProducer(destination);

  producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);// 设置为非持久性

  // 设置持久性的话,文件也可以先缓存下来,接收端离线再连接也可以收到文件

   // 构造 BlobMessage,用来传输文件

  BlobMessage blobMessage = session.createBlobMessage(file);

  blobMessage.setStringProperty("FILE.NAME", file.getName());

  blobMessage.setLongProperty("FILE.SIZE", file.length());

  System.out.println("开始发送文件:" + file.getName() + ",文件大小:"

  + file.length() + " 字节");

   // 7. 发送文件

  producer.send(blobMessage);

  System.out.println("完成文件发送:" + file.getName());

   producer.close();

  session.close();

  connection.close(); // 不关闭 Connection, 程序则不退出

  }

  }

  

  3. 编写接收文件的程序 FileReceiver.java

  package com.unmi.jms;

  import java.io.*;

  import javax.jms.*;

  import javax.jms.Message;

  import javax.swing.*;

  import org.apache.activemq.*;

  public class FileReciever {

   /**

  * @param args

  * @throws JMSException

  */

  public static void main(String[] args) throws JMSException {

   // 获取 ConnectionFactory

  ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(

  "tcp://10.80.38.10:61616");

   // 创建 Connection

  Connection connection = connectionFactory.createConnection();

  connection.start();

   // 创建 Session

  Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

   // 创建 Destinatione

  Destination destination = session.createQueue("File.Transport");

   // 创建 Consumer

  MessageConsumer consumer = session.createConsumer(destination);

   // 注册消息监听器,当消息到达时被触发并处理消息

  consumer.setMessageListener(new MessageListener() {

   // 监听器中处理消息

  public void onMessage(Message message) {

  if (message instanceof BlobMessage) {

  BlobMessage blobMessage = (BlobMessage) message;

  try {

  String fileName = blobMessage.getStringProperty("FILE.NAME");

  System.out.println("文件接收请求处理:" + fileName + ",文件大小:"

  + blobMessage.getLongProperty("FILE.SIZE")+ " 字节");

   JFileChooser fileChooser = new JFileChooser();

  fileChooser.setDialogTitle("请指定文件保存位置");

  fileChooser.setSelectedFile(new File(fileName));

  if (fileChooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {

  File file = fileChooser.getSelectedFile();

  OutputStream os = new FileOutputStream(file);

   System.out.println("开始接收文件:" + fileName);

  InputStream inputStream = blobMessage.getInputStream();

   //写文件,你也可以使用其他方式

  byte[] buff = new byte[256];

  int len = 0;

  while ((len = inputStream.read(buff)) > 0) {

  os.write(buff, 0, len);

  }

  os.close();

  System.out.println("完成文件接收:" + fileName);

  }

   } catch (Exception e) {

  e.printStackTrace();

  }

  }

  }

  });

  }

  }

分享到:
评论

相关推荐

    JMS 使用 ActiveMQ 传送文件

    2. **JMS 使用 ActiveMQ 传送文件.doc** - 这个文档应该直接涵盖了如何使用ActiveMQ进行文件传输的具体步骤,可能包括了创建消息、设置目的地、发送和接收文件的代码示例,以及如何处理错误和异常的情况。...

    activeMQ在文件上传的应用

    在与ActiveMQ集成时,Uploadify的服务器端处理脚本需要与ActiveMQ进行交互,通常是发送一个包含文件信息的消息到ActiveMQ队列或主题。 2. **ActiveMQ配置**:在ActiveMQ中,我们需要创建一个特定的队列或主题来接收...

    activemq 接收文件流 C#

    本篇将详细探讨如何使用C#与ActiveMQ进行交互,尤其是如何接收文件流。我们将从基础概念、环境配置、C#客户端库介绍、接收文件流的步骤以及示例代码等方面进行深入讲解。 首先,理解ActiveMQ的基本工作原理至关重要...

    activemq-web-console-5.11.2

    activemq-web-console的默认使用方式是通过在activemq.xml中导入jetty.xml配置一个jetty server来实现的...3.还有一个fileserver,用来支持通过activemq发送文件时的中转服务器。blob message时配置的http文件服务器。

    activeMQ发送消息返回消息

    在ActiveMQ中,发送和接收消息是一个核心功能,它允许应用程序之间进行异步通信,提高系统的可扩展性和解耦性。 在ActiveMQ中发送消息,通常涉及以下步骤: 1. **创建ConnectionFactory**:ConnectionFactory是...

    activeMQ收发工具.rar

    本压缩包“activeMQ收发工具.rar”包含了用于测试和操作ActiveMQ的实用工具,主要是一个jar包文件,方便用户在安装了Java Development Kit (JDK) 的环境中运行。 ActiveMQ收发工具的核心功能是通过Java应用程序发送...

    ActiveMQ使用SSL加密文件Demo

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

    ACTIVEMQ C#下的例子

    描述中的"activemq 传送数据流发送文件"意味着我们将文件的内容转换为数据流,并通过ActiveMQ进行传输。这涉及到文件的读取和流操作,如使用`FileStream`读取文件,然后将`FileStream`转换为`MemoryStream`,最后将`...

    ActiveMQ学习笔记之九--发送消息到队列中

    这篇"ActiveMQ学习笔记之九--发送消息到队列中"主要探讨的是如何通过编程方式向ActiveMQ队列发送消息,这对于理解和应用消息中间件至关重要。 首先,我们要理解ActiveMQ中的队列(Queue)概念。队列是一种先进先出...

    spring activeMQ-demo 配置

    2. **配置ActiveMQ**: 可以通过web管理界面(默认http://localhost:8161/admin)来创建Topic或Queue,也可以在配置文件(conf/activemq.xml)中预先配置。 **二、Spring配置** 1. **JMS配置**: 在Spring的配置文件...

    activeMQ-cpp 测试文件

    3. 配置ActiveMQ的配置文件(如conf/activemq.xml),根据需求调整服务器端口、存储设置、网络连接等参数。 4. 启动ActiveMQ服务,通常通过执行bin目录下的启动脚本(如Windows上的activemq.bat或Linux上的./bin/...

    liuwei1989#study-guide#ActiveMQ传输文件的几种方式原理1

    对于比较小的文件,简单的处理方式是先读取所有的文件成byte[],然后使用ByteMessage,把文件数据发送到broker,像正常的message一样处理。

    ActiveMq+SpringMVC实现邮件异步发送

    ActiveMQ作为一个开源的消息中间件,被广泛用于实现消息队列和发布/订阅模式,它允许应用将非实时任务如邮件发送等操作放到后台处理,从而提升系统的响应速度。在本项目中,ActiveMQ与SpringMVC框架结合,实现了邮件...

    ActiveMQ发送和接收protobuf协议消息的实例(精心整理,亲测可用)

    在本文中,我们将深入探讨如何使用ActiveMQ发送和接收基于protobuf(Protocol Buffers)协议的消息,同时也会介绍如何进行ActiveMQ的简化封装和配置自动重连机制。 首先,protobuf是Google开发的一种数据序列化协议...

    activemq_CPP_2018最新版本全部所需文件附 expat文件

    ActiveMQ是Apache软件基金会开发的一个开源消息传递系统,它实现了Java Message Service (JMS) API,使得应用程序可以发送和接收各种类型的消息。ActiveMQ支持多种协议,包括OpenWire、AMQP、STOMP、XMPP、MQTT等,...

    SpringBoot+ActiveMq+MQTT实现消息的发送和接收

    在本文中,我们将深入探讨如何使用SpringBoot、ActiveMQ和MQTT来实现消息的发送与接收。这是一个典型的分布式系统中的消息通信场景,其中SpringBoot作为应用程序框架,ActiveMQ作为消息中间件,而MQTT(Message ...

    activeMQ 源码分析

    KahaDB是一个专门为ActiveMQ设计的嵌入式日志文件系统,能够提供高效且可靠的消息持久化服务。 - **KahaDB的工作原理**:KahaDB采用追加的方式写入消息到磁盘上的日志文件中。当消息被发送到Broker时,会先写入到...

    Springboot整合ActiveMQ,实现消息的发送接收功能源码

    在本文中,我们将深入探讨如何使用SpringBoot框架与Apache ActiveMQ集成,以便实现实时的消息发送和接收功能。首先,让我们简要了解一下SpringBoot和ActiveMQ。 **SpringBoot简介** SpringBoot是Spring框架的一个...

    java+ftpServer+derby+ActiveMQ

    在“ftpSever\derby\ActiveMQ”这个场景中,我们可以想象这样的工作流程:用户通过FTP Server上传文件,FTP Server接收到文件后,可以调用后台的Java服务来处理这些文件。这个Java服务可能连接到Derby数据库,将文件...

    ActiveMQ消息服务器 v6.0.1.zip

    4. 日志聚合:将分散的日志消息集中通过ActiveMQ发送到日志分析系统,便于统一管理和分析。 5. 数据同步:在分布式系统中,ActiveMQ可以用于不同节点间的数据同步和复制。 三、使用ActiveMQ v6.0.1 1. 安装部署:...

Global site tag (gtag.js) - Google Analytics