• 三、activemq 消息头、消息体、消息属性


    一、消息头:

    消息头数据可以直接在send方法里面设置;

    名称类型默认值描述
    JMSDestination javax.jms.Destination Set by the producer 消息发送的目的地,分为queue和topic (只能在send方法中设置/实例化是设置)
    JMSReplyTo javax.jms.Destination null User defined.
    JMSType String "" User defined.
    JMSDeliveryMode int DeliveryMode.PERSISTENT

    持久化模式

    对于一条持久化消息:应该被传送“一次仅仅一次”,这就意味着如果JMS提供者出现故障,该消息不会丢失,它会在服务器恢复之后再次传递

    对于一条非持久化的消息:最多会传送一次,意味着服务器出现故障,该消息会丢失

    static final int NON_PERSISTENT = 1;

    static final int PERSISTENT = 2;

    (只能在send方法中设置)

    JMSPriority int 4

    消息的优先级

    从0-9十个级别,0-4普通消息,5-9加急消息,默认是4级。

    JMS不要求mq严格按照这10个优先级发送消息,但必须保证加急消息要优于普通消息到达。

    (只能在send方法中设置)

    JMSMessageID String unique MQ对每个消息产生的唯一标识的ID。无法设置,默认生成
    JMSTimestamp long Time the message was sent Time in milliseconds.
    JMSCorrelationID String null User defined.
    JMSExpiration long 0

    消息过期时间

    可以设置消息在一定时间后过期,默认(0)永不过期

    如果消息在过期时间达到之后还没发送到目的地,该消息就会被清除。

    (只能在send方法中设置)

    JMSRedelivered boolean false true if the message is being resent to the consumer, persisted via persistJMSRedelivered

    发送消息,消息头属性举例说明:

     1 package com.mock.utils;
     2 
     3 import java.util.Calendar;
     4 
     5 import javax.jms.Connection;
     6 import javax.jms.JMSException;
     7 import javax.jms.MessageProducer;
     8 import javax.jms.Queue;
     9 import javax.jms.Session;
    10 import javax.jms.TextMessage;
    11 
    12 import org.apache.activemq.ActiveMQConnectionFactory;
    13 
    14 public class TestActiveMqProducerCanDelete {
    15     private static final String ACTIVEMQ_URL = "tcp://192.168.2.189:61616";
    16     private static final String QUEUE_NAME = "queue_01";
    17     private static final String QUEUE_NAME_2 = "queue_02";
    18 
    19     public static void main(String[] args) throws JMSException {
    20         // 创建连接工厂,按照给定的URL,采用默认用户名密码
    21         ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL);
    22         // 通过连接工厂 获取connection 并启动访问
    23         Connection conn = activeMQConnectionFactory.createConnection();
    24         conn.start();
    25         // 创建session会话
    26         Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
    27         // 创建目的地 (具体是队列还是主题topic)
    28         Queue queue = session.createQueue(QUEUE_NAME);
    29         // 创建目的地 (具体是队列还是主题topic)
    30         Queue queue2 = session.createQueue(QUEUE_NAME_2);
    31 
    32         // 创建消息的生产者
    33         MessageProducer messageProducer = session.createProducer(null);
    34 
    35         for (int i = 0; i < 3; i++) {
    36             // 创建消息;可以理解为学生按照要求写好问题
    37             TextMessage textMessage = session.createTextMessage("mession-------" + i);
    38             textMessage.setJMSMessageID(Calendar.getInstance().getTimeInMillis() + "x");// 不可以自定义
    39             textMessage.setJMSType("map");// 可自定义
    40             // 通过messageProducer 发送给mq 设置 目的地 、消息、持久化、优先级、过期时间
    41             messageProducer.send(queue2, textMessage, 2, 5, 10000);
    42 
    43         }
    44         messageProducer.close();
    45         session.close();
    46         conn.close();
    47         System.out.println("发送消息成功");
    48     }
    49 
    50 }

    消费者消费:

     1 package com.mock.utils;
     2 
     3 import java.util.Calendar;
     4 
     5 import javax.jms.Connection;
     6 import javax.jms.JMSException;
     7 import javax.jms.MessageProducer;
     8 import javax.jms.Queue;
     9 import javax.jms.Session;
    10 import javax.jms.TextMessage;
    11 
    12 import org.apache.activemq.ActiveMQConnectionFactory;
    13 
    14 public class TestActiveMqProducerCanDelete {
    15     private static final String ACTIVEMQ_URL = "tcp://192.168.2.189:61616";
    16     private static final String QUEUE_NAME = "queue_01";
    17     private static final String QUEUE_NAME_2 = "queue_02";
    18 
    19     public static void main(String[] args) throws JMSException {
    20         // 创建连接工厂,按照给定的URL,采用默认用户名密码
    21         ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL);
    22         // 通过连接工厂 获取connection 并启动访问
    23         Connection conn = activeMQConnectionFactory.createConnection();
    24         conn.start();
    25         // 创建session会话
    26         Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
    27         // 创建目的地 (具体是队列还是主题topic)
    28         Queue queue = session.createQueue(QUEUE_NAME);
    29         // 创建目的地 (具体是队列还是主题topic)
    30         Queue queue2 = session.createQueue(QUEUE_NAME_2);
    31 
    32         // 创建消息的生产者
    33         MessageProducer messageProducer = session.createProducer(null);
    34 
    35         for (int i = 0; i < 3; i++) {
    36             // 创建消息;可以理解为学生按照要求写好问题
    37             TextMessage textMessage = session.createTextMessage("mession-------" + i);
    38             textMessage.setJMSMessageID(Calendar.getInstance().getTimeInMillis() + "x");// 不可以自定义
    39             textMessage.setJMSType("map");// 可自定义
    40             // 通过messageProducer 发送给mq 设置 目的地 、消息、持久化、优先级、过期时间
    41             messageProducer.send(queue2, textMessage, 2, 5, 10000);
    42 
    43         }
    44         messageProducer.close();
    45         session.close();
    46         conn.close();
    47         System.out.println("发送消息成功");
    48     }
    49 
    50 }
    View Code

    控制台打印结果:

    优先级:5
    持久化:2
    过期时间:1659931102331
    ID:ID:DESKTOP-V16T5JV-63651-1659931092159-1:1:1:1:1
    type:map
    收到消息:mession-------0
    优先级:5
    持久化:2
    过期时间:1659931102358
    ID:ID:DESKTOP-V16T5JV-63651-1659931092159-1:1:1:1:2
    type:map
    收到消息:mession-------1
    优先级:5
    持久化:2
    过期时间:1659931102374
    ID:ID:DESKTOP-V16T5JV-63651-1659931092159-1:1:1:1:3
    type:map
    收到消息:mession-------2

    二、消息体:

    activemq 提供了5种消息体格式:

    • TextMessage:普通字符串消息,包含一个String
    • MapMessage:一个map类型消息,key为String
    • BytesMessage:二进制数组消息,包含一个byte[]
    • StreamMessage:Java数据流消息,用标准流操作来顺序的填充和读取;
    • ObjectMessage:对象消息,包含一个可序列号的Java对象

    TextMessage 这里步骤赘述了;

    MapMessage应用举例:

    生产者:

     1 public static void main(String[] args) throws JMSException {
     2         // 创建连接工厂,按照给定的URL,采用默认用户名密码
     3         ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL);
     4         // 通过连接工厂 获取connection 并启动访问
     5         Connection conn = activeMQConnectionFactory.createConnection();
     6         conn.start();
     7         // 创建session会话
     8         Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
     9         // 创建目的地 (具体是队列还是主题topic)
    10         Queue queue = session.createQueue(QUEUE_NAME);
    11         // 创建消息的生产者
    12         MessageProducer messageProducer = session.createProducer(queue);
    13 
    14         for (int i = 0; i < 3; i++) {
    15             // 创建消息;可以理解为学生按照要求写好问题
    16             MapMessage mapMessage = session.createMapMessage();
    17             mapMessage.setBoolean("boolean1", true);
    18             mapMessage.setDouble("double", 1223);
    19             mapMessage.setDouble("float", 1223);
    20             mapMessage.setString("String", "xxxxxxxxxxxxxx");
    21             messageProducer.send(mapMessage);
    22         }
    23         messageProducer.close();
    24         session.close();
    25         conn.close();
    26         System.out.println("发送消息成功");
    27     }
    View Code

    消费者:

     1 @SuppressWarnings("unchecked")
     2     public static void main(String[] args) throws JMSException, IOException {
     3         // 创建连接工厂,按照给定的URL,采用默认用户名密码
     4         ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL);
     5         // 通过连接工厂 获取connection 并启动访问
     6         Connection conn = activeMQConnectionFactory.createConnection();
     7         conn.start();
     8         // 创建session会话
     9         Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
    10         // 创建目的地 (具体是队列还是主题topic)
    11         Queue queue = session.createQueue(QUEUE_NAME);
    12 
    13         // 创建目的地 (具体是队列还是主题topic)
    14         Queue queue2 = session.createQueue(QUEUE_NAME_2);
    15 
    16         // 创建消息的生产者
    17         MessageConsumer messageConsumer = session.createConsumer(queue);
    18 
    19         /**
    20          * 同步阻塞方式(receive()) 订阅者或者接受者调用MessageConsumer的receive()方法来接受消息,receive方法在能够接收到消息之前(或超时之前)将一直阻塞;
    21          */
    22         while (true) {
    23             MapMessage mapMessage = (MapMessage) messageConsumer.receive();
    24             System.out.println("*********************");
    25             if (mapMessage != null) {
    26                 // 单个取值
    27                 Boolean b1 = mapMessage.getBoolean("boolean1");
    28                 System.out.println("b1:" + b1);
    29                 // 遍历
    30                 Enumeration<String> mapNames = mapMessage.getMapNames();
    31                 while (mapNames.hasMoreElements()) {
    32                     String key = (String) mapNames.nextElement();
    33                     Object value = mapMessage.getObject(key);
    34                     System.out.printf("key:%s,value:%s%n", key, value);
    35                 }
    36             } else {
    37                 break;
    38             }
    39             System.out.println("*********************");
    40         }
    41 
    42         messageConsumer.close();
    43         session.close();
    44         conn.close();
    45 
    46     }
    View Code

     打印结果:

    *********************
    b1:true
    key:boolean1,value:true
    key:String,value:xxxxxxxxxxxxxx
    key:float,value:1223.0
    key:double,value:1223.0
    *********************
    *********************
    b1:true
    key:boolean1,value:true
    key:String,value:xxxxxxxxxxxxxx
    key:float,value:1223.0
    key:double,value:1223.0
    *********************
    *********************
    b1:true
    key:boolean1,value:true
    key:String,value:xxxxxxxxxxxxxx
    key:float,value:1223.0
    key:double,value:1223.0
    *********************

    BytesMessage

    生产者:

     1 public static void main(String[] args) throws JMSException {
     2         // 创建连接工厂,按照给定的URL,采用默认用户名密码
     3         ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL);
     4         // 通过连接工厂 获取connection 并启动访问
     5         Connection conn = activeMQConnectionFactory.createConnection();
     6         conn.start();
     7         // 创建session会话
     8         Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
     9         // 创建目的地 (具体是队列还是主题topic)
    10         Queue queue = session.createQueue(QUEUE_NAME);
    11         // 创建消息的生产者
    12         MessageProducer messageProducer = session.createProducer(queue);
    13 
    14         // Byte类型的数据
    15         BytesMessage bytesMessage = session.createBytesMessage();
    16         bytesMessage.writeByte((byte) 12);
    17         bytesMessage.writeShort((short) 12);
    18         bytesMessage.writeInt(12);
    19         bytesMessage.writeLong(1212);
    20         bytesMessage.writeFloat(12.12f);
    21         bytesMessage.writeDouble(8.88);
    22         bytesMessage.writeBoolean(true);
    23         bytesMessage.writeChar('a');
    24         bytesMessage.writeUTF("嘿嘿");
    25         messageProducer.send(bytesMessage);
    26 
    27         messageProducer.close();
    28         session.close();
    29         conn.close();
    30         System.out.println("发送消息成功");
    31     }
    View Code

    消费者:

     1 @SuppressWarnings("unchecked")
     2     public static void main(String[] args) throws JMSException, IOException {
     3         // 创建连接工厂,按照给定的URL,采用默认用户名密码
     4         ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL);
     5         // 通过连接工厂 获取connection 并启动访问
     6         Connection conn = activeMQConnectionFactory.createConnection();
     7         conn.start();
     8         // 创建session会话
     9         Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
    10         // 创建目的地 (具体是队列还是主题topic)
    11         Queue queue = session.createQueue(QUEUE_NAME);
    12 
    13         // 创建目的地 (具体是队列还是主题topic)
    14         Queue queue2 = session.createQueue(QUEUE_NAME_2);
    15 
    16         // 创建消息的生产者
    17         MessageConsumer messageConsumer = session.createConsumer(queue);
    18 
    19         /**
    20          * 同步阻塞方式(receive()) 订阅者或者接受者调用MessageConsumer的receive()方法来接受消息,receive方法在能够接收到消息之前(或超时之前)将一直阻塞;
    21          */
    22         while (true) {
    23             BytesMessage message = (BytesMessage) messageConsumer.receive();
    24             System.out.println("*********************");
    25             if (message != null) {
    26                 byte b = message.readByte();
    27                 System.out.println("b:" + b);
    28                 short i = message.readShort();
    29                 System.out.println("i:" + i);
    30                 int i1 = message.readInt();
    31                 System.out.println("i1:" + i1);
    32                 long l = message.readLong();
    33                 System.out.println("l:" + l);
    34                 float v1 = message.readFloat();
    35                 System.out.println("v1:" + v1);
    36                 double v = message.readDouble();
    37                 System.out.println("v:" + v);
    38                 boolean aBoolean = message.readBoolean();
    39                 System.out.println("aBoolean:" + aBoolean);
    40                 char c = message.readChar();
    41                 System.out.println("c:" + c);
    42                 String s = message.readUTF();
    43                 System.out.println("s:" + s);
    44             } else {
    45                 break;
    46             }
    47             System.out.println("*********************");
    48         }
    49 
    50         messageConsumer.close();
    51         session.close();
    52         conn.close();
    53 
    54     }
    View Code

    控制台显示结果:

    *********************
    b:12
    i:12
    i1:12
    l:1212
    v1:12.12
    v:8.88
    aBoolean:true
    c:a
    s:嘿嘿
    *********************

    StreamMessage

    StreamMesage携带了一个Java原始数据类型流作为有效负载。它提供了一套将格式化字节流映射为Java原始数据类型的简便方法。
    StreamMessage保持了写入流时的顺序和原始数据类型,因此它适用于形式转换规则

     生产者:

     1 public static void main(String[] args) throws JMSException {
     2         // 创建连接工厂,按照给定的URL,采用默认用户名密码
     3         ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL);
     4         // 通过连接工厂 获取connection 并启动访问
     5         Connection conn = activeMQConnectionFactory.createConnection();
     6         conn.start();
     7         // 创建session会话
     8         Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
     9         // 创建目的地 (具体是队列还是主题topic)
    10         Queue queue = session.createQueue(QUEUE_NAME);
    11         // 创建消息的生产者
    12         MessageProducer messageProducer = session.createProducer(queue);
    13 
    14         // Byte类型的数据
    15         StreamMessage message = session.createStreamMessage();
    16         message.writeString("stream string");
    17         message.writeInt(11111);
    18         messageProducer.send(message);
    19 
    20         messageProducer.close();
    21         session.close();
    22         conn.close();
    23         System.out.println("发送消息成功");
    24     }
    View Code

    消费者

     1 @SuppressWarnings("unchecked")
     2     public static void main(String[] args) throws JMSException, IOException {
     3         // 创建连接工厂,按照给定的URL,采用默认用户名密码
     4         ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL);
     5         // 通过连接工厂 获取connection 并启动访问
     6         Connection conn = activeMQConnectionFactory.createConnection();
     7         conn.start();
     8         // 创建session会话
     9         Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
    10         // 创建目的地 (具体是队列还是主题topic)
    11         Queue queue = session.createQueue(QUEUE_NAME);
    12 
    13         // 创建目的地 (具体是队列还是主题topic)
    14         Queue queue2 = session.createQueue(QUEUE_NAME_2);
    15 
    16         // 创建消息的生产者
    17         MessageConsumer messageConsumer = session.createConsumer(queue);
    18 
    19         /**
    20          * 同步阻塞方式(receive()) 订阅者或者接受者调用MessageConsumer的receive()方法来接受消息,receive方法在能够接收到消息之前(或超时之前)将一直阻塞;
    21          */
    22         while (true) {
    23             StreamMessage message = (StreamMessage) messageConsumer.receive();
    24             System.out.println("*********************");
    25             if (message != null) {
    26                 System.out.println(message.readString());
    27                 System.out.println(message.readInt());
    28             } else {
    29                 break;
    30             }
    31             System.out.println("*********************");
    32         }
    33 
    34         messageConsumer.close();
    35         session.close();
    36         conn.close();
    37 
    38     }
    View Code

     控制台打印:

    *********************
    stream string
    11111
    *********************

    ObjectMessage

    生产者:

     1 public static void main(String[] args) throws JMSException {
     2         // 创建连接工厂,按照给定的URL,采用默认用户名密码
     3         ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL);
     4         // 通过连接工厂 获取connection 并启动访问
     5         Connection conn = activeMQConnectionFactory.createConnection();
     6         conn.start();
     7         // 创建session会话
     8         Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
     9         // 创建目的地 (具体是队列还是主题topic)
    10         Queue queue = session.createQueue(QUEUE_NAME);
    11         // 创建消息的生产者
    12         MessageProducer messageProducer = session.createProducer(queue);
    13 
    14         // Byte类型的数据
    15         ObjectMessage message = session.createObjectMessage();
    16         User user = new User();
    17         user.setAddress("嘉兴");
    18         user.setName("Joy");
    19         message.setObject(user);
    20         messageProducer.send(message);
    21 
    22         messageProducer.close();
    23         session.close();
    24         conn.close();
    25         System.out.println("发送消息成功");
    26     }
    View Code

    消费者:

    额外设置 activeMQConnectionFactory.setTrustAllPackages(true);否则报错:

    activemq This class is not trusted to be serialized as ObjectMessage payload .

     1 @SuppressWarnings("unchecked")
     2     public static void main(String[] args) throws JMSException, IOException {
     3         // 创建连接工厂,按照给定的URL,采用默认用户名密码
     4         ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL);
     5         activeMQConnectionFactory.setTrustAllPackages(true);
     6         // 通过连接工厂 获取connection 并启动访问
     7         Connection conn = activeMQConnectionFactory.createConnection();
     8         conn.start();
     9         // 创建session会话
    10         Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
    11         // 创建目的地 (具体是队列还是主题topic)
    12         Queue queue = session.createQueue(QUEUE_NAME);
    13 
    14         // 创建目的地 (具体是队列还是主题topic)
    15         Queue queue2 = session.createQueue(QUEUE_NAME_2);
    16 
    17         // 创建消息的生产者
    18         MessageConsumer messageConsumer = session.createConsumer(queue);
    19         /**
    20          * 同步阻塞方式(receive()) 订阅者或者接受者调用MessageConsumer的receive()方法来接受消息,receive方法在能够接收到消息之前(或超时之前)将一直阻塞;
    21          */
    22         while (true) {
    23             ObjectMessage message = (ObjectMessage) messageConsumer.receive();
    24             System.out.println("*********************");
    25             if (message != null) {
    26                 User user = (User) message.getObject();
    27                 System.out.println(user);
    28             } else {
    29                 break;
    30             }
    31             System.out.println("*********************");
    32         }
    33 
    34         messageConsumer.close();
    35         session.close();
    36         conn.close();
    37 
    38     }
    View Code

     控制台打印:

    *********************
    User [id=null, name=Joy, address=嘉兴]
    *********************

    JMS消息属性:

    • void setBooleanProperty(String name, boolean value) throws JMSException;
    • void setByteProperty(String name, byte value) throws JMSException;
    • void setShortProperty(String name, short value) throws JMSException;
    • void setIntProperty(String name, int value) throws JMSException;
    • void setLongProperty(String name, long value) throws JMSException;
    • void setFloatProperty(String name, float value) throws JMSException;
    • void setDoubleProperty(String name, double value) throws JMSException;
    • void setStringProperty(String name, String value) throws JMSException;
    • void setObjectProperty(String name, Object value) throws JMSException;

    属性应用举例

    生产者:

     1 public static void main(String[] args) throws JMSException {
     2         // 创建连接工厂,按照给定的URL,采用默认用户名密码
     3         ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL);
     4         // 通过连接工厂 获取connection 并启动访问
     5         Connection conn = activeMQConnectionFactory.createConnection();
     6         conn.start();
     7         // 创建session会话
     8         Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
     9         // 创建目的地 (具体是队列还是主题topic)
    10         Queue queue = session.createQueue(QUEUE_NAME);
    11         // 创建消息的生产者
    12         MessageProducer messageProducer = session.createProducer(queue);
    13 
    14         // Byte类型的数据
    15         ObjectMessage message = session.createObjectMessage();
    16         User user = new User();
    17         user.setAddress("嘉兴");
    18         user.setName("Joy");
    19         message.setObject(user);
    20         message.setStringProperty("StringProperty", "我是 属性xxxxxxx");
    21         messageProducer.send(message);
    22 
    23         messageProducer.close();
    24         session.close();
    25         conn.close();
    26         System.out.println("发送消息成功");
    27     }
    View Code

    消费者:

     1 public static void main(String[] args) throws JMSException, IOException {
     2         // 创建连接工厂,按照给定的URL,采用默认用户名密码
     3         ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL);
     4         activeMQConnectionFactory.setTrustAllPackages(true);
     5         // 通过连接工厂 获取connection 并启动访问
     6         Connection conn = activeMQConnectionFactory.createConnection();
     7         conn.start();
     8         // 创建session会话
     9         Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
    10         // 创建目的地 (具体是队列还是主题topic)
    11         Queue queue = session.createQueue(QUEUE_NAME);
    12 
    13         // 创建目的地 (具体是队列还是主题topic)
    14         Queue queue2 = session.createQueue(QUEUE_NAME_2);
    15 
    16         // 创建消息的生产者
    17         MessageConsumer messageConsumer = session.createConsumer(queue);
    18         /**
    19          * 同步阻塞方式(receive()) 订阅者或者接受者调用MessageConsumer的receive()方法来接受消息,receive方法在能够接收到消息之前(或超时之前)将一直阻塞;
    20          */
    21         while (true) {
    22             ObjectMessage message = (ObjectMessage) messageConsumer.receive();
    23             System.out.println("*********************");
    24             if (message != null) {
    25                 System.out.println(message.getStringProperty("StringProperty"));
    26                 User user = (User) message.getObject();
    27                 System.out.println(user);
    28             } else {
    29                 break;
    30             }
    31             System.out.println("*********************");
    32         }
    33 
    34         messageConsumer.close();
    35         session.close();
    36         conn.close();
    37 
    38     }
    View Code

    控制台输出:

    *********************
    我是 属性xxxxxxx
    User [id=null, name=Joy, address=嘉兴]
    *********************

  • 相关阅读:
    [工作积累点滴整理]虚拟化、云计算配置规划<一>
    视频监控——从其他浏览器打开低版本IE方案
    好记性不如烂笔头-nginx安装环境与Linux安装ftp组件
    (阿里巴巴)数据库连接池——Druid (未完持续更新)
    条形码和二维码编码解码工具类源码
    JS防抖与节流函数封装
    根据设备width(375)动态设置font-size
    JS写一个简单日历
    js常用身份校验规则
    list之flex布局写法及禁止橡皮筋效果
  • 原文地址:https://www.cnblogs.com/lixiuming521125/p/16561185.html
Copyright © 2020-2023  润新知