Activemq消息类型

来源:互联网 发布:印度软件产值 编辑:程序博客网 时间:2024/06/10 00:29
Activemq消息类型JMS规范中的消息类型包括TextMessageMapMessageObjectMessageBytesMessageStreamMessage等五种。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());        }    }
0 0