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 消息类型 (转)的更多相关文章

  1. Activemq消息类型

    Activemq消息类型JMS规范中的消息类型包括TextMessage.MapMessage.ObjectMessage.BytesMessage.和StreamMessage等五种.ActiveM ...

  2. activemq 消息类型

    //文本消息 TextMessage textMessage = session.createTextMessage("文本消息"); producer.send(textMess ...

  3. ActiveMQ之二--JMS消息类型

    1.前言 //发送文本消息 session.createTextMessage(msg); //接受文本消息 public void onMessage(Message msg) { TextMess ...

  4. 学习ActiveMQ(五):activemq的五种消息类型和三种监听器类型

    一.前面我们一直发送的是字符串类型,其实activemq一共支持五种消息类型: 1.String消息类型:发送者:消费者: 1.String消息类型:发送者:消费者: 1.String消息类型:发送者 ...

  5. ActiveMQ常见消息类型

    JMS由下面三部分组成:消息头.属性.消息体.其中消息体定义了五种消息体格式,也可以称为消息类型. JMS规范中的消息类型包括TextMessage.MapMessage.ObjectMessage. ...

  6. JAVA的设计模式之观察者模式----结合ActiveMQ消息队列说明

    1----------------------观察者模式------------------------------ 观察者模式:定义对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的 ...

  7. JAVAEE——宜立方商城08:Zookeeper+SolrCloud集群搭建、搜索功能切换到集群版、Activemq消息队列搭建与使用

    1. 学习计划 1.solr集群搭建 2.使用solrj管理solr集群 3.把搜索功能切换到集群版 4.添加商品同步索引库. a) Activemq b) 发送消息 c) 接收消息 2. 什么是So ...

  8. Activemq消息确认机制 --转载

      转自:http://blog.csdn.net/czp11210/article/details/47022639 ActiveMQ消息传送机制以及ACK机制详解 AcitveMQ是作为一种消息存 ...

  9. ActiveMQ消息的延时和定时投递

    ActiveMQ对消息延时和定时投递做了很好的支持,其内部启动Scheduled来对该功能支持,也提供了一个封装的消息类型:org.apache.activemq.ScheduledMessage,只 ...

随机推荐

  1. 转载:CSS的组成,三种样式(内联式,嵌入式,外部式),优先级

    (仅供自己备份) 原文地址:http://blog.csdn.net/chq11106004389/article/details/50515717 CSS的组成 选择符/选择器+声明(属性+值) 选 ...

  2. netfilter 学习摘要

    netfilter 子系入口在L3,完成后把数据包发往L4 netfilter 主要功能: 数据包选择(iptables) 数据包过滤 网络地址转换(NAT) 数据包操纵(在路由选择之前或之后修改数据 ...

  3. usb之鼠标作为按键输入

    1. 首先搞清楚,鼠标点左键.右键等能得到什么数据,然后分析这些数据上报事件即可. 第一个基本点:usb_alloc_urb函数,创建一个struct urb结构体,只能使用这个函数来创建,它是urb ...

  4. Linux内核调用SPI平台级驱动_实现OLED的显示功能

    Linux内核调用SPI驱动_实现OLED显示功能 0. 导语 进入Linux的世界,发现真的是无比的有趣,也发现搞Linux驱动从底层嵌入式搞起真的是很有益处.我们在单片机.DSP这些无操作系统的裸 ...

  5. (mark)ubuntu16.04下安装&配置anaconda+tensorflow新手教程

    https://blog.csdn.net/m0_37864814/article/details/82112029

  6. MongoDB入门---文档查询之$type操作符&limit方法&skip方法&简单排序(sort)操作

    上一篇文章呢,已经分享过了一部分查询操作了,这篇文章呢?就来继续分享哈.接下来呢我们直接看MongoDB中的$type操作符哈.它呢是基于BSON类型来检索集合中匹配的数据类型,并且返回结果,在Mon ...

  7. 如何在同一个Excel里,对两个很相似的工作簿比对出不同之处

    如何在同一个Excel里,对两个很相似的工作簿比对出不同之处

  8. 笔记-sql语句

    笔记-sql语句 1.      sql语句基础 虽然经常使用sql语句,但没有一个整体式的文档,整理了一下. 1.1.    select foundation: select <colnum ...

  9. 从国内下载Linux的CentOS系统

    http://mirror.nsc.liu.se/centos-store/7.3.1611/isos/x86_64/

  10. CC2541工程优化等级的问题

    1. 调试工程的时候发现,优化等级稍微调高一级,就容易出问题,只能用None,其他等级会出现数据丢失的现象.