博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ActiveMQ常见消息类型
阅读量:4928 次
发布时间:2019-06-11

本文共 4340 字,大约阅读时间需要 14 分钟。

  JMS由下面三部分组成:消息头、属性、消息体。其中消息体定义了五种消息体格式,也可以称为消息类型。

  JMS规范中的消息类型包括TextMessage、MapMessage、ObjectMessage、BytesMessage、和StreamMessage等五种。ActiveMQ也有对应的实现,下面我们结合Spring JMS分别来看一下五种消息类型的收发代码。类结构如下图:

  下面结合spring研究常见的几种消息类型:

applicationContext.xml如下:

 

1.最常见的  TextMessage

public void sendMessage(final String message) {        jmsTemplate.send(destination, new MessageCreator() {            public Message createMessage(Session session) throws JMSException {                TextMessage textMessage = session.createTextMessage(message);                return textMessage;            }        });        logger.info("send textMesage:{}",message);    }

 查看后台:

 

2.MapMessage发送Map消息

public void sendMessage(final String message) {        jmsTemplate.send(destination, new MessageCreator() {            public Message createMessage(Session session) throws JMSException {                MapMessage mapMessage = session.createMapMessage();                mapMessage.setString("str",message);                mapMessage.setBoolean("boolean",false);                return mapMessage;            }        });    }

查看后台消息:

 

3.ObjectMessage发送序列化对象消息,Object必须实现Serializable接口

public void sendMessage() {        jmsTemplate.send(destination, new MessageCreator() {            public Message createMessage(Session session) throws JMSException {                ObjectMessage objectMessage = session.createObjectMessage();                ArrayList
obj = new ArrayList(); obj.add("123"); obj.add("456"); objectMessage.setObject(obj); return objectMessage; } }); }

 查看后台消息:

 

 

4.  bytesMessage 发送字节消息

public void sendMessage() {        jmsTemplate.send(destination, new MessageCreator() {            public Message createMessage(Session session) throws JMSException {                BytesMessage bytesMessage = session.createBytesMessage();                bytesMessage.writeBytes("str".getBytes());                bytesMessage.writeBoolean(false);                return bytesMessage;            }        });    }

后台:

5.StreamMessage  发送Stream消息

public void sendMessage() {        jmsTemplate.send(destination, new MessageCreator() {            public Message createMessage(Session session) throws JMSException {                StreamMessage streamMessage = session.createStreamMessage();                streamMessage.writeString("str");                streamMessage.writeInt(100);                streamMessage.writeObject("obj");                return streamMessage;            }        });    }

 

消息的接受者:

public void onMessage(Message message) {        try{            System.out.println(message.getClass());            // TextMessage            if (message instanceof TextMessage) {                TextMessage textMessage1 = (TextMessage) message;                System.out.println(textMessage1.getText());            }            // MapMessage            if (message instanceof MapMessage) {                MapMessage mapMessage = (MapMessage) message;                System.out.println(mapMessage.toString());            }            // ObjectMessage            if (message instanceof ObjectMessage) {                ObjectMessage objectMessage = (ObjectMessage) message;                System.out.println(objectMessage.toString());            }            // BytesMessage            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));                }            }            // StreamMessage            if (message instanceof StreamMessage) {                StreamMessage sm = (StreamMessage) message;                System.out.println(sm.readString());                System.out.println(sm.readInt());            }        }catch (Exception e){        }    }

 

转载于:https://www.cnblogs.com/qlqwjy/p/10463296.html

你可能感兴趣的文章
C++ push方法与push_back方法
查看>>
Spring4笔记8--Spring与JDBC模板(IoC应用的例子)
查看>>
B. Batch Sort
查看>>
构建应用层服务
查看>>
《沉静领导》读书笔记zz
查看>>
沉浸式
查看>>
CentOS6.5下Ambari安装搭建部署大数据集群(图文分五大步详解)(博主强烈推荐)...
查看>>
weekend110(Hadoop)的 第三天笔记
查看>>
io流和序列化
查看>>
观察者模式
查看>>
【Window Power Shell】介绍与使用
查看>>
数据库 外连接于内连接
查看>>
NHibernate系列文章二十一:延迟加载
查看>>
shell 编程(1)
查看>>
asp.net 项目在 IE 11 下出现 “__doPostBack”未定义 的解决办法
查看>>
ef core 2.0 执行update-database命令时提示__EFMigrationsHistory doesn’t exist
查看>>
在项目中使用log4net记录日志
查看>>
计算几何----线段交
查看>>
重载函数的参数匹配与转换
查看>>
A. Kirill And The Game
查看>>