消息中间件_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:\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());
        }
    }

原文地址:https://www.cnblogs.com/51ma/p/11388187.html

时间: 2024-11-10 11:36:20

消息中间件_ActiveMQ消息类型的相关文章

[转载]微信企业号不同消息类型发送

我们知道,企业号主要是面向企业需求而生的,因此内部消息的交流显得非常重要,而且发送.回复消息数量应该很可观,对于大企业尤其如此,因此可以结合企业号实现内部消息的交流.企业号具有关注安全.消息无限制等特点,很适合企业内部的环境.本文主要介绍如何利用企业号实现文本.图片.文件.语音.视频.图文消息等消息的发送操作. 1.企业号特点 对于企业号,有以下一些特点: 1)关注更安全 –只有企业通讯录的成员才能关注企业号,分级管理员.保密消息等各种特性确保企业内部信息的安全. 企业可以设置自行验证关注者身份

PHP-微信公众平台开发-接收用户输入消息类型并响应

<?php // 该代码块用于接收用户消息,根据用户输入的消息类型进行判断,文本,图片,视频,位置,链接,语音等,并取得值,处理后给予响应. // 接收用户消息 // 微信公众账号接收到用户的消息类型判断 // define("TOKEN", "weixin"); $wechatObj = new wechatCallbackapiTest(); if (!isset($_GET['echostr'])) { $wechatObj->responseMs

微信公众平台的消息类型与事件类型

消息类型(MsgType):event textvoicevideolocationlink 而消息类型(Event)下的事件类型:subscribeSCANLOCATIONCLICKVIEW 具体内容参考微信公众平台网址: 消息类型: http://mp.weixin.qq.com/wiki/10/79502792eef98d6e0c6e1739da387346.html 事件类型: http://mp.weixin.qq.com/wiki/2/5baf56ce4947d35003b86a98

2.3.1 BGP消息类型

在建立BGP的对等连接之前,两个邻居必须执行标准的TCP三次握手,在端口179打开TCP连接.BGP消息都采用单播方式经TCP连接传递给邻居 BGP消息类型 *Open消息 *Keeplive *Update *Notification 1.Open打开消息 TCP会话建立之后,两个邻居都要发送Open消息,Open消息信息如下: *BGP版本号 *自治系统号 会话发起路由器的AS号,该消息可以确定是EBGP或IBGP *保持时间 表示路由器在收到Keepalive消息或Update消息之前可以

Openfire:XMPP的几种消息类型

XMPP 有以下几种消息类型: l   Normal l   Chat l   Groupchat l   Headline l   Error 根据官方文档(http://www.igniterealtime.org/builds/openfire/docs/3.3.2/documentation/javadoc/org/xmpp/packet/Message.Type.html)的解释,它们的用途分别如下: l   Normal – 用于类mail的接口 l   Chat – 用于典型的行到

ActiveMQ学习笔记(六)——JMS消息类型

1.前言 ActiveMQ学习笔记(四)--通过ActiveMQ收发消息http://my.oschina.net/xiaoxishan/blog/380446 和ActiveMQ学习笔记(五)--使用Spring JMS收发消息http://my.oschina.net/xiaoxishan/blog/381209   中,发送和接受的消息类型都是TextMessage,即文本消息(如下面的代码所示).显然消息类型只有文本类型是不能满足要求的. //发送文本消息  session.create

Activemq消息类型

Activemq消息类型JMS规范中的消息类型包括TextMessage.MapMessage.ObjectMessage.BytesMessage.和StreamMessage等五种.ActiveMQ也有对应的实现,下面我们结合Spring JMS分别来看一下五种消息类型的收发代码.1.TextMessage /** * 向指定Destination发送text消息 * @param destination * @param message */ public void sendTxtMess

heartbeat消息类型介绍及查看监听消息思路介绍

aadf8.1.6 heartbeat 消息类型: 8.1.6.3rexmit-request 控制重传心跳请求,此消息不太重要,细节就不浪费笔墨了.除了串口之外,上面一般都是使用udp协议发送 原文地址:http://blog.51cto.com/skinglzw/2061778

阿里云-ONS-Help-产品介绍-消息类型:定时和延时消息

ylbtech-阿里云-ONS-Help-产品介绍-消息类型:定时和延时消息 1.返回顶部 1. 本页目录 概念介绍 适用场景 使用方式 注意事项 TCP 协议示例代码 HTTP 协议示例代码 本文主要介绍消息队列 RocketMQ 版的定时消息和延时消息的概念.适用场景以及使用过程中的注意事项. 概念介绍 定时消息:Producer 将消息发送到消息队列 RocketMQ 版服务端,但并不期望这条消息立马投递,而是推迟到在当前时间点之后的某一个时间投递到 Consumer 进行消费,该消息即定