zoukankan      html  css  js  c++  java
  • 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:	" + tm.getText());
            }
    
            // 如果是Map消息
            if (message instanceof MapMessage) {
                MapMessage mm = (MapMessage) message;
                System.out.println("from" + destination.toString() + " get textMessage:	" + 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:	"
                        + 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());
            }
        }
  • 相关阅读:
    淘淘商城-day02[框架整合,后台系统搭建]
    淘淘商城-day01[项目介绍,搭建maven工程,SVN使用]
    CentOS7安装FastDFS 5.05
    ubuntu ssh 开启
    BAT 快速删除CVS文件和拷贝最近修改文件的目录结构
    eclipse 插件
    Eclipse 工作空间目录 详解
    淘淘商城-传智播客J2EE的实践项目 目录篇
    eclipse 版本 发行版本
    ROM、PROM、EPROM、EEPROM、Flash ROM分别指什么?
  • 原文地址:https://www.cnblogs.com/likui360/p/9263686.html
Copyright © 2011-2022 走看看