Activemq 消息类型 (转)
- Activemq消息类型
JMS规范中的消息类型包括TextMessage、MapMessage、ObjectMessage、BytesMessage、和StreamMessage等五种。ActiveMQ也有对应的实现,下面我们结合Spring JMS分别来看一下五种消息类型的收发代码。
- 1、TextMessage
- /**
- * 向指定Destination发送text消息
- * @param destination
- * @param message
- */
- public void sendTxtMessage(Destination destination, final String message){
- if(null == destination){
- destination = jmsTemplate.getDefaultDestination();
- }
- jmsTemplate.send(destination, new MessageCreator() {
- public Message createMessage(Session session) throws JMSException {
- return session.createTextMessage(message);
- }
- });
- System.out.println("springJMS send text message...");
- }
2、MapMessage
- /**
- * 向指定Destination发送map消息
- * @param destination
- * @param message
- */
- public void sendMapMessage(Destination destination, final String message){
- if(null == destination){
- destination = jmsTemplate.getDefaultDestination();
- }
- jmsTemplate.send(destination, new MessageCreator() {
- public Message createMessage(Session session) throws JMSException {
- MapMessage mapMessage = session.createMapMessage();
- mapMessage.setString("msgId",message);
- return mapMessage;
- }
- });
- System.out.println("springJMS send map message...");
- }
3、ObjectMessage
- /**
- * 向指定Destination发送序列化的对象
- * @param destination
- * @param object object 必须序列化
- */
- public void sendObjectMessage(Destination destination, final Serializable object){
- if(null == destination){
- destination = jmsTemplate.getDefaultDestination();
- }
- jmsTemplate.send(destination, new MessageCreator() {
- public Message createMessage(Session session) throws JMSException {
- return session.createObjectMessage(object);
- }
- });
- System.out.println("springJMS send object message...");
- }
4、BytesMessage
- /**
- * 向指定Destination发送字节消息
- * @param destination
- * @param bytes
- */
- public void sendBytesMessage(Destination destination, final byte[] bytes){
- if(null == destination){
- destination = jmsTemplate.getDefaultDestination();
- }
- jmsTemplate.send(destination, new MessageCreator() {
- public Message createMessage(Session session) throws JMSException {
- BytesMessage bytesMessage = session.createBytesMessage();
- bytesMessage.writeBytes(bytes);
- return bytesMessage;
- }
- });
- System.out.println("springJMS send bytes message...");
- }
5、streamMessage
- /**
- * 向默认队列发送Stream消息
- */
- public void sendStreamMessage(Destination destination) {
- jmsTemplate.send(new MessageCreator() {
- public Message createMessage(Session session) throws JMSException {
- StreamMessage message = session.createStreamMessage();
- message.writeString("stream string");
- message.writeInt(11111);
- return message;
- }
- });
- System.out.println("springJMS send Strem message...");
- }
消息接收处理
- /**
- * 根据消息类型进行对应的处理
- * @param destination 消息发送/接收共同的Destination
- * @throws JMSException
- */
- public void receive(Destination destination) throws JMSException {
- Message message = jmsTemplate.receive(destination);
- // 如果是文本消息
- if (message instanceof TextMessage) {
- TextMessage tm = (TextMessage) message;
- System.out.println("from" + destination.toString() + " get textMessage:\t" + tm.getText());
- }
- // 如果是Map消息
- if (message instanceof MapMessage) {
- MapMessage mm = (MapMessage) message;
- System.out.println("from" + destination.toString() + " get textMessage:\t" + mm.getString("msgId"));
- }
- // 如果是Object消息
- if (message instanceof ObjectMessage) {
- ObjectMessage om = (ObjectMessage) message;
- ExampleUser exampleUser = (ExampleUser) om.getObject();
- System.out.println("from" + destination.toString() + " get ObjectMessage:\t"
- + ToStringBuilder.reflectionToString(exampleUser));
- }
- // 如果是bytes消息
- if (message instanceof BytesMessage) {
- byte[] b = new byte[1024];
- int len = -1;
- BytesMessage bm = (BytesMessage) message;
- while ((len = bm.readBytes(b)) != -1) {
- System.out.println(new String(b, 0, len));
- }
- }
- // 如果是Stream消息
- if (message instanceof StreamMessage) {
- StreamMessage sm = (StreamMessage) message;
- System.out.println(sm.readString());
- System.out.println(sm.readInt());
- }
- }
Activemq 消息类型 (转)的更多相关文章
- Activemq消息类型
Activemq消息类型JMS规范中的消息类型包括TextMessage.MapMessage.ObjectMessage.BytesMessage.和StreamMessage等五种.ActiveM ...
- activemq 消息类型
//文本消息 TextMessage textMessage = session.createTextMessage("文本消息"); producer.send(textMess ...
- ActiveMQ之二--JMS消息类型
1.前言 //发送文本消息 session.createTextMessage(msg); //接受文本消息 public void onMessage(Message msg) { TextMess ...
- 学习ActiveMQ(五):activemq的五种消息类型和三种监听器类型
一.前面我们一直发送的是字符串类型,其实activemq一共支持五种消息类型: 1.String消息类型:发送者:消费者: 1.String消息类型:发送者:消费者: 1.String消息类型:发送者 ...
- ActiveMQ常见消息类型
JMS由下面三部分组成:消息头.属性.消息体.其中消息体定义了五种消息体格式,也可以称为消息类型. JMS规范中的消息类型包括TextMessage.MapMessage.ObjectMessage. ...
- JAVA的设计模式之观察者模式----结合ActiveMQ消息队列说明
1----------------------观察者模式------------------------------ 观察者模式:定义对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的 ...
- JAVAEE——宜立方商城08:Zookeeper+SolrCloud集群搭建、搜索功能切换到集群版、Activemq消息队列搭建与使用
1. 学习计划 1.solr集群搭建 2.使用solrj管理solr集群 3.把搜索功能切换到集群版 4.添加商品同步索引库. a) Activemq b) 发送消息 c) 接收消息 2. 什么是So ...
- Activemq消息确认机制 --转载
转自:http://blog.csdn.net/czp11210/article/details/47022639 ActiveMQ消息传送机制以及ACK机制详解 AcitveMQ是作为一种消息存 ...
- ActiveMQ消息的延时和定时投递
ActiveMQ对消息延时和定时投递做了很好的支持,其内部启动Scheduled来对该功能支持,也提供了一个封装的消息类型:org.apache.activemq.ScheduledMessage,只 ...
随机推荐
- Home Assistant系列美化篇——替换天气 UI
替换天气组件 weather 的默认 UI,生成美观大方的气象卡片. Home Assistant 原生的天气平台不少,国内用户常用的有雅虎天气和 Darksky.其他论坛和社区也有分享自制的和风.彩 ...
- [转]Visual C++ 和 C++ 有什么区别?
注:本篇内容转载与网络,方便自己学习,如有侵权请您联系我删除,谢谢. 有位同学问我“Visual C++和C++有什么区别?”,这的确是初学者会感到困惑的问题,比较常见.除此之外,还有“先学C++好, ...
- 清华大学《C++语言程序设计基础》线上课程笔记05---vector对象,对象的复制与移动,string类
vector 对象 C++标准库中的一个类模板 封装任何类型的动态数组,自动创建和删除. 数组下标越界检查. 将动态数组封装成类的知识点中封装的ArrayOfPoints也提供了类似功能,但只适用于一 ...
- JS本地保存数据的几种方法
1.Cookie 这个恐怕是最常见也是用得最多的技术了,也是比较古老的技术了.COOKIE优点很多,使用起来很方便 但它的缺点也很多: 比如跨域访问问题:无法保存太大的数据(最大仅为4KB):本地保存 ...
- Java技术——Iterator和Enumeration的不同
个函数接口.Iterator除了能读取集合的数据之外,也能对数据进行删除操作.尽管前者还没有被弃用但是已经被后者所代替了,Enumeration已经过时的,之所以没有被弃用是因为它仍被几种从以前版本遗 ...
- 北京Uber优步司机奖励政策(1月3日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 3991: [SDOI2015]寻宝游戏
3991: [SDOI2015]寻宝游戏 https://www.lydsy.com/JudgeOnline/problem.php?id=3991 分析: 虚树+set. 要求树上许多点之间的路径的 ...
- php输出带尖括号的内容
有这样的数组 $arr = array( 'facebook' => 'facebook', '<facebook>' => '<facebook>', ); 输出 ...
- GameplayKit的GKStateMachine用法与实例
GKStateMachine 玩家进入GameScene场景中 -> 通过GKStateMachine进入到指定的游戏状态GKState 在GameScene场景中 -> 根据不同的逻辑调 ...
- Linux系统负载查询
查询Linux系统负载情况,一般需要了解三个方面的信息: 1.Linux系统配置.如Linux版本号.CPU.内存.网络.磁盘等: 2.收集系统负载信息的手段.常用的工具包有sysstat和procp ...