消息message由消息头,消息体和消息属性组成
1.消息头
(1)JMSDestination 消息发送的目的地,主要指Queue和Topic
(2)JMSDeliveryMode 持久化,持久模式若JMS提供者出现故障,该消息不会丢失,在服务恢复之后再次传递;非持久的消息最多传递一次,服务器出现故障后消息会永久丢失
(3)JMSExpiration消息过期时间,设置消息可用时长值为0时表示永不过期
(4)JMSPriority优先级,0-4为普通,5-9为高级,默认是4,除了高级一定比低级优先外,其他不是严格的优先顺序
(5)JMSMessaessageID消息的唯一身份标识,可以用自带的textMessage.getMessageId也可以自定义
2.消息体
消息体即为封装的具体消息数据,有5种消息格式
(1)TextMessage普通的字符串消息,即一个String字符串
(2)MapMessage 一个map类型的消息,key为一个String字符串,value为java的基本类型
(3)BytesMessage 二进制数组消息,即一个byte[]数组
(4)StreamMessage Java数据流消息,按照标准流操作顺序读取和填充数据
(5)ObjectMessage 对象消息,包含一个可序列化的Java对象
发送和接受的消息体类型必须一致
3.消息属性
消息属性是除消息头以外的表记消息属性的参数,可以用来识别、去重、重点标注等
消息属性需要自己添加,通常有
还有setStringProperty(String s,String s1)等,使用时通过消息体调用方法,例如TextMessage,
TextMessage textMessage=session.createTextMessage("xiaoming");
textMessage.setStringProperty("kehu","vip");
接收时,
textMessage.getStringProperty("kehu");
获取该拥护是否是vip