JMS总共提供了6个消息接口,分别为Message,TextMessage,StreamMessage,MapMessage,ObjectMessage以及ByteMessage,没中类型的消息都由3部分组成:消息头,消息属性和消息体。下面,我们就来探讨一下这几种消息的使用,首先看下消息的创建,代码如下:
@Service("messageProducerService")
public class MessageProducerService implements ProducerService {
/**
* 注入JmsTemplate
*/
@Resource(name="jmsTemplate")
private JmsTemplate jTemplate;
@Override
public void sendMessage(Destination destination, String message) {
System.out.println("acknowledgeMode:"+jTemplate.getSessionAcknowledgeMode());
/*
* 这种类型的消息仅仅包含JMS消息头和消息属性,而且,它仅限用于事件通知
* ,一个事件通知就是出现某些情况的一个广播,告警,或者通知,如果业务场景需要一个不含任何消息内容
* 的简单通知,轻量级消息类型就是实现它的最有效方式,例如,为了广播通知某个特定类中的一个异常,可以
* 发布一条不含有任何消息内容的异常文本消息
*/
jTemplate.send(destination, new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
Message m = session.createMessage();
m.setStringProperty("exception", "java.lang.NosuchMethodException");
return m;
}
});
/*
* 这种类型的消息携带了一个字符串作为消息内容,可以用作简单的文本类型消息以及复杂的字符数据的交换例如:
* xml,json格式,发送这种类型的消息一般有两种方式,具体发送方式如下:
*/
jTemplate.send(destination, new MessageCreator() {
/**
*
* attention:直接使用session创建一个带具体消息内容的消息
* Details:example1
* @author chhliu
*/
// @Override
// public Message createMessage(Session session) throws JMSExce