- 浏览: 7259361 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
最近项目中将发送文件,但是测试采用字节流ByteMessage和BlobMessage ,StreamMessage的学习应用,并测试。
下面是BlobMessage测试的情况。但是在测试的时候发送word和pdf文档传送之后,不能打开。不知道为什么要,具体怎么处理之后可以。但是发送文本类文件没有任何问题。
消息的发送者:
package easyway.app.activemq.demo.fileserver; import java.io.File; import javax.jms.DeliveryMode; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageProducer; import javax.jms.Session; import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.ActiveMQSession; import org.apache.activemq.BlobMessage; /** * 消息的发送者 * 备注在测试Word文档和pdf文档时不能打开,但是发送文本类文件可以,没有任何问题。 * @author longgangbai * */ public class ActiveMQFileServerSender { private String user = ActiveMQConnection.DEFAULT_USER; private String password = ActiveMQConnection.DEFAULT_PASSWORD; private String url = "tcp://localhost:61616?jms.blobTransferPolicy.defaultUploadUrl=http://localhost:8161/fileserver/"; private String subject = "Blob Queue"; private Destination destination = null; private ActiveMQConnection connection = null; private ActiveMQSession session = null; private MessageProducer producer = null; // 初始化 private void initialize() throws JMSException, Exception { ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory( user, password, url); connection = (ActiveMQConnection) connectionFactory.createConnection(); connection.setCopyMessageOnSend(false); session = (ActiveMQSession) connection.createSession(false, Session.AUTO_ACKNOWLEDGE); destination = session.createQueue(subject); producer = session.createProducer(destination); producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); } // 发送消息 public void produceMessage(File file) throws JMSException, Exception { initialize(); BlobMessage msg = session.createBlobMessage(file); connection.start(); System.out.println("Producer:->Sending message: " + file.getName()); producer.send(msg); System.out.println("Producer:->Message sent complete!"); } // 关闭连接 public void close() throws JMSException { System.out.println("Producer:->Closing connection"); if (producer != null) producer.close(); if (session != null) session.close(); if (connection != null) connection.close(); } }
消息的接受者:
package easyway.app.activemq.demo.fileserver; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.InputStream; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageConsumer; import javax.jms.Session; import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.ActiveMQSession; import org.apache.activemq.BlobMessage; import org.apache.activemq.command.ActiveMQBlobMessage; /** * 消息的接受者 * @author longgangbai * */ public class ActiveMQFileServerReceiver { private String user = ActiveMQConnection.DEFAULT_USER; private String password = ActiveMQConnection.DEFAULT_PASSWORD; private String url = "tcp://localhost:61616?jms.blobTransferPolicy.defaultUploadUrl=http://localhost:8161/fileserver/"; private String subject = "Blob Queue"; private Destination destination = null; private String filepath="D://photo_album_app_guide.bak.pdf"; private ActiveMQConnection connection = null; private ActiveMQSession session = null; private MessageConsumer consumer = null; // 初始化 private void initialize() throws JMSException, Exception { ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory( user, password, url); connection = (ActiveMQConnection) connectionFactory.createConnection(); connection.setCopyMessageOnSend(false); session = (ActiveMQSession) connection.createSession(false, Session.AUTO_ACKNOWLEDGE); destination = session.createQueue(subject); consumer = session.createConsumer(destination); } //接受 消息 public void receive(String filename) throws JMSException, Exception { initialize(); this.filepath=filename; connection.start(); Message msg =(BlobMessage)consumer.receive(); if(msg instanceof ActiveMQBlobMessage){} InputStream input = ((ActiveMQBlobMessage) msg).getInputStream(); StringBuilder b = new StringBuilder(); int i = input.read(); while (i != -1) { b.append((char) i); i = input.read(); } input.close(); File uploaded = new File(filepath); BufferedWriter bw=new BufferedWriter(new FileWriter(uploaded)); bw.write(b.toString()); System.out.println("consumer receiver sucessful ....."); bw.flush(); bw.close(); } // 关闭连接 public void close() throws JMSException { System.out.println("Producer:->Closing connection"); if (consumer != null) consumer.close(); if (session != null) session.close(); if (connection != null) connection.close(); } }
测试代码:
package easyway.app.activemq.demo.fileserver; import java.io.File; /** * BlobMessage的使用 * @author longgangbai * */ public class ActiveMQFileServerTest { /** * * @param args */ public static void main(String[] args) throws Exception { ActiveMQFileServerSender producer = new ActiveMQFileServerSender(); ActiveMQFileServerReceiver consumer = new ActiveMQFileServerReceiver(); String fileName = "D://BlockingClient.java"; String receiverFilename="D://BlockingClient_bak.java"; File file = new File(fileName); producer.produceMessage(file); consumer.receive(receiverFilename); // 延时5000毫秒之后停止接受消息 Thread.sleep(5000); // 开始监听 producer.close(); // 延时500毫秒之后发送消息 Thread.sleep(2000); consumer.close(); } }
评论
2 楼
longgangbai
2011-10-23
xuyangcn 写道
接收二进制文件时不应该用StringBuilder或者StringBuffer之类的,需要用byte数组直接写入FileOutputStream。看看字节和字符的区别。
我明白的意思,其实是我习惯了使用BufferedWriter和BufferedReader了,也是为了我测试方便才这样写的,O(∩_∩)O哈哈~
1 楼
xuyangcn
2011-10-18
接收二进制文件时不应该用StringBuilder或者StringBuffer之类的,需要用byte数组直接写入FileOutputStream。看看字节和字符的区别。
发表评论
-
ActiveMQ的拦截器插件
2011-07-22 09:29 6505ActiveMQ拦截器使用和原 ... -
ActiveMQ的各种表SQL的管理
2011-07-20 20:58 3408在ActiveMQ为了方便的切换数据库,更为了深入 ... -
ActiveMQ中advisory的使用和原理
2011-07-20 18:46 2860在ActiveMQ中的监控和管理也可以通过Advisory实现 ... -
ActiveMQ的异步转发(DispatchAsync)功能
2011-07-20 11:29 46641. 消息者异步转发功能 针对正常情况下,在一个 ... -
ActiveMQ 的独占消费(Exclusive Consumer)
2011-07-20 11:26 4054我们经常希望维持队列中的消息,按一定次序转发给消息者。然而当有 ... -
ActiveMQ5.5在Tomcat6.0中部署
2011-07-19 22:27 2890在ActiveMQ中监控管理Web组件为ActiveMQCon ... -
Window 下ActiveMQ端口冲突,负载均衡,主备配置
2011-07-17 16:03 5491在Java 学习中Window操作系 ... -
ActiveMQ中消息权限策略
2011-07-17 00:31 2621在ActiveMQ发送消息的时候,可以通过MessageAut ... -
ActiveMQ和Jetty整合使用
2011-07-07 22:49 5518在ActiveMQ中的activemq.b ... -
ActiveMQ 和Commons-Daemon整合
2011-07-07 20:13 2902在一般的java项目中,如果在linu ... -
关于ActiveMQ中怎么实现一对多发送消息讨论
2011-07-07 19:50 6023无 ... -
ActiveMQ 中ActiveMQBlobMessage的接收和发送
2011-07-05 10:47 5088在ActiveMQ中对比较大的消息采用一 ... -
ActiveMQ 和JAXWS整合
2011-07-04 22:02 2177在多个系统中可能考虑到远程访问等的,采用WebServ ... -
ActiveMQ-Camel的使用
2011-07-02 10:27 10163在一个电子系统中可能接受来自不同供应商的 ... -
ActiveMQ模板和Velocity整合使用
2011-07-01 19:50 2272ActiveMQ模板使用 在ActiveMQ中AMQ ... -
ActiveMQ中消息游标
2011-06-30 18:16 2626在 ActiveMQ 5.0的之前版本中,b ... -
ActiveMQ和Tomcat的整合应用
2011-06-30 17:00 11157在ActiveMQ的资源让容器Tomcat管理时 ... -
ActiveMQ关于文件传输需要注意哪些方面?
2011-06-18 22:11 6134最近一直在关注一些文件传输中间件的实现,想用Acti ... -
关于ActiveMQ中Session和Connection资源的管理
2011-06-15 23:43 25052配置完了持久化之后,我们就可以使用代码来发送 ... -
ActiveMQ中关于文件锁的机制的学习
2011-06-14 23:31 3251在ActiveMQ中提供了文件数据库机 ...
相关推荐
activeMQ的发送消息后接收者返回信息
NULL 博文链接:https://sswh.iteye.com/blog/1974169
springboot整合ActiveMQ源码,适合范围消息队列入门小伙伴,对ActiveMQ消息队列不太了解,不知道如何发送消息,接收消息可以围观。
SpringBoot+ActiveMq+MQTT实现消息的发送和接收 后台消费者、生产者、消息发送接口、发送消息业务类等相关配置
实现了ActiveMQ的初步封装,比较适合新手入门学习,简单明了
activeMQ的测试工具,用于发送和接收activeMQ消息,jar包形式的,安装完jdk之后用java -jar xxx.jar命令运行
activemq消息测试工具
本代码关于activemq-cpp的核心代码参考的chenxun2009的博客园,其他部分包括:从配置文件中读取消息通道,过滤条件等信息。
springboot集成activemq实现消息接收demo
用C#实现的ActiveMQ发布/订阅消息传送源程序
ActiveMQ与Zookeeper集群测试代码,用于测试高可用效果 。。。。。。。。。。。。。。。
Android基于MQTT协议利用ActiveMQ发送消息给Android端接收,属于长连接那种,类似Socket通信
下载后可直接导入Maven项目运行,包含ActiveMQ的连接代码以及数据插入和读取测试
activemq 通过ajax发送接收消息简单例子
ActiveMQ(包括消息生成端和andorid消息接受端),实现了点对点的消息推送,和广播消息推送,当然离线推送也实现了。
ActiveMQ队列消息过期时间设置和自动清除解决方案.docx
项目使用springboot2.0.4搭建,一个父项目包含两个子项目:发送服务;监听服务;消息服务使用ActiveMQ 5.14.3,在docker中运行。 项目中有两种协议消息:activemq和mqtt。
activeMQ发送消息客户端发送消息分为同步发送与异步发送同步发送,发送者发送一条消息会阻塞直到broker反馈一个确认消息给发送者,表示消息已经被broker处理。这个机制提供了消息的安全性保障,由于是阻塞的操作,会...
SpringBoot整合ActiveMQ(消息中间件)实现邮件发送功能,里面含有详细业务逻辑代码,配置文件等