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());
            }
        }
  • 相关阅读:
    Linux工具-curl
    常用工具-Postman
    HTTP头部信息
    HTTP状态码
    HTTP/HTTP2协议
    HTTP协议
    常用的服务端口
    三次握手,四次挥手和抓包工具
    路由表
    TCP/IP协议详解
  • 原文地址:https://www.cnblogs.com/likui360/p/9263686.html
Copyright © 2011-2022 走看看