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();

  }

  }

  }

  });

  }

  }
ActiveMQ传输文件的几种方式原理与优劣 在本文中,我们将探讨几种使用ActiveMQ传输文件的方式,介绍它们的原理和优劣,并提供相应的源代码示例。ActiveMQ也提供了一种专门用于文件传输的功能,可以通过配置文件传输的相关参数,实现更高级的文件传输功能,如断点续传、文件压缩、并行传输等。这种方式是最简单的文件传输方式,它通过将文件内容转换为字节流进行传输。发送端将文件读取为字节流,并将字节流作为消息发送到ActiveMQ队列或主题。接收端接收到每个块后,将其存储在临时位置,并在接收完所有块后,将它们组合成完整的文件。 阅读详情

相关推荐

ActiveMQ BlobMessage 文件传输示例:使用嵌入式的 Jetty FileServer 编程

通过本文,我们了解了如何使用 ActiveMQ 的 BlobMessage 机制来传输文件,并结合嵌入式的 Jetty FileServer 进行编程。我们创建了一个 ActiveMQ 生产者,将文件作为 BlobMessage 发送到 ActiveMQ 代理服务器,然后创建了一个 ActiveMQ 消费者,从 ActiveMQ 接收 BlobMessage 并保存到本地目录。最后,我们使用嵌入式的 Jetty FileServer 提供文件下载服务。

PixelInk的博客 227

activemq 发送文件(转)

这里使用的 MQ 中间件是开源的 ActiveMQ,我们没有采用 BytesMessage 来按字节传送文件,而是 ActiveMQ 为我们提供了 org.apache.activemq.BlobMessage,可以用它来传送大对象。org.apache.activemq.ActiveMQSession 中有以下几个创建 BlobMessage 对象的方法: createBlobMessa...

summer85的博客 535

JMS 使用 ActiveMQ 传送文件

NULL 博文链接:https://itjiehun.iteye.com/blog/1321969

消息中间件之ActiveMQ传输文件

Activemq传输文件        我用的是MQ消息中间件activemq来传输文件的,当然还有很多其他的方式,选择哪种方式还请自行搜索各个消息中间件的特点来定。 ActiveMQ传输文件的方式有byteMessage、StreamMessage、BlobMessage。其中bytemessage和streammessage如果不加工处理的话,只能传输小文件,小于100M的文件应该都可以传

sweep_的博客 8623

从Zemax到Speos:HUD设计数据无缝迁移避坑指南(含STEP文件精度验证)

本文详细介绍了从Zemax到Speos的HUD设计数据无缝迁移方法,重点解决Zernike曲面参数保真、虚拟厚度设置和坐标系对齐等核心问题。通过STEP文件精度验证和工程化解决方案,帮助工程师避免数据迁移中的常见陷阱,提升HUD系统设计效率。适用于Ansys Zemax和Ansys Speos用户,优化光学性能验证流程。

h6i7j8的博客 1064

STM32F103 串口DMA + 空闲中断 实现不定长数据收发

文章目录1. 空闲中断1.1 uart_dma.c1.2 uart_dma.h1.3 main.c1.4 stm32f10x_it.c1.5 效果演示1.6 知识补充1.6.1 外设的基地址     DMA(Direct Memory Access,直接存储器访问) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载。否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU

夏夜晚风_的博客 3万+

ActiveMQ之三 -- 使用ActiveMQ来传送文件

这个方法还有待研究,目前还有如下几个疑点: 1. ActiveMQ 报出这样的信息: INFO | Usage Manager memory limit (1048576) reached for topic://EXCHANGE.FILE. Producers will be throttled to the rate at which messages are removed...

点点滴滴的足迹,幻化成漫天的云彩 705

PHP实战:5分钟搞定SM4国密加密算法集成(附完整代码)

本文详细介绍了如何在PHP项目中快速集成SM4国密加密算法,提供完整的代码实现和实际应用示例。从算法原理到核心代码解析,再到性能优化与安全实践,帮助开发者高效实现数据加密功能,满足金融、政务等领域的合规需求。

weixin_29315569的博客 355

java调用mq发送文件_ActiveMQ之三 -- 使用ActiveMQ来传送文件

packageorg.apache.activemq.exchange.file;importjava.io.BufferedOutputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjavax.jms.Connection;importjavax.jms.ConnectionFactory;import...

weixin_42396588的博客 417

calibre QRC提取寄生参数

typical将上面的文件QCI_flow里面的文件 在Cp 到当前 ,其实应该是某几个文件,但是我给忘记了 就全cp过来了 ,无影响,不过也希望大佬指正。

2202_75711937的博客 1523

在Visual Studio中搭建Dynamo Python开发环境,效率飞一般的增长

在Visual Studio中搭建Dynamo Python开发环境,效率飞一般的增长

BIM的乐趣 1731

Linux mq 发送xml文件,发送XML文件的ActiveMQ

Please refer the below code.Here we will receive message simple file creation then writing bytes coming from BytesMessageObject until EOF occurs.BytesMessage bm = (BytesMessage)topicSubscriber.receive...

weixin_39958366的博客 382

在 RAP 中把业务对象“搬到网口上”:service definition 与 service binding 的全流程、范式与实战

本文解析了SAP ABAP开发中service definition和service binding的关键作用。service definition负责选择要暴露的CDS实体和行为,形成服务模型;而service binding则将服务绑定到具体协议(如OData),生成可访问的端点。两者分离带来三大优势:支持同一模型多重发布、降低环境迁移耦合度、强化安全治理。文章通过预订业务对象的端到端示例,展示了如何从CDS建模到生成Fiori Elements预览。最后以售后工单业务为例,说明这种架构如何支持内外服务

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 391

java activeMQ消息的发送与接收

java activeMQ消息的发送与接收 activemq是我们经常用到的消息队列之一,比如说速度快,对spring的很好的支持,支持多种协议等等,今天我们就来看一下activeMQ消息的发送与接收的源代码。 我这里使用了两个配置文件,其实在一个配置文件里面就可以完成发送与接收功能,但是为了方便观察日志,我就使用了两个配置文件。在使用代码之前需要搭建好activeMQ消息队列环境。 一、代码目录结构 所建立的工程是maven工程,代码结构如图所示: 一、maven配置pom.xml 4.

qq_39093570的博客 2779

华为校招&实习&留学生机试真题目录+算法分类+在线OJ+通过率+视频讲解

全网最新最全华为校招&实习&留学生机试真题题库

m0_73659489的博客 6878

Cursor使用教程:用 Cursor 创建第一个 Java 项目

Cursor是一款基于VS Code的AI编程编辑器,专为开发者设计。安装前需确保JDK 8+、Maven 3.8+等环境配置,支持Windows系统。编辑器提供中文界面选项,可通过扩展市场安装语言包。创建Java项目支持手动和AI提示词两种方式:手动需创建目录结构并编写代码;AI方式则通过自然语言描述快速生成项目框架和代码。标准Java项目包含src/main/java主代码目录、src/test/java测试目录及pom.xml等配置文件。Maven项目中,pom.xml是核心配置文件,管理项目依赖与构

博客 3549

我用activemq的webconsole发送blobmessage。一个文件发送系统。

作为一个小结,我把代码都共享下~~~ 领导肯定气坏了,注意版权啊~~~~~~~   急着需要的密我,或者留言,我的电脑刚换过,新电脑网卡坏的,总之现在没法上传。   非常好用的文件发布系统。web界面,web上传,性能卓越。。。感谢关注。。   最近老无聊了。   下面要抛开手中的spring/activemq/jms/blob/jetty/eclipse相关的事情了, 因为公...

thanq的博客 210

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

使用ActiveMQ的BLOBMessage

这里是指发送大一点的文本文件或者图片。 发送BLOBMessage: package com.ibm.cbic.rtls.file; import java.io.File; import javax.jms.*; import javax.swing.JFileChooser; import org.apache.activemq.*; /** * 通过 ActiveMQ

Chatopera 3135

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

activemq例子代码 发送BytesMessage消息

import javax.jms.Connection; import javax.jms.DeliveryMode; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageProducer; import javax.jms.ObjectMessage; import ...

summer85的博客 958

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

activemq延迟发送 消费者会实时得到消息

目前的情况是生产端告诉TCP端想要延迟发送 TextMessage message = session.createTextMessage(newsJson); long delayTime = 1 * 60* 1000; message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, delayTime); // 发送消息到目的

Truong的专栏 1963

activemq发送客户端(封装)

1、在pom中引入   cn.activemq.client   activemqclient   1.0 2、添加配置文件 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"

braveheartzj的博客 1902

activemq 开启监听_整合ActiveMQ实现延时发现消息

点击上方蓝色字体,选择“标星公众号”优质文章,第一时间送达 作者|楼兰的胡杨来源 | urlify.cn/EVfqmq生产者提供两个发送消息的方法,一个是即时发送消息,一个是延时发送消息。延时发送消息需要手动修改activemq目录conf下的activemq.xml配置文件,开启延时。本文中依赖文件和application.properties配置文件与《Spring Boo...

weixin_42364391的博客 456
上一篇: jfreechart_生成折线图,饼图,柱状图,堆栈柱状图
下一篇: jboss-4.2.3.GA++apache-activemq-5.1.0整合
javaee_jsp
博客等级 码龄15年 0粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值