前一篇文中,我們說(shuō)了rabbitMQ的confirm機(jī)制和事務(wù),接下來(lái)我們討論下消息的存儲(chǔ)。
一. 消息持久化
消息寫(xiě)入磁盤(pán)是rabbitMQ保證可用性的基礎(chǔ)。
1.1 Exchange持久化
durable參數(shù)設(shè)置為true
@Bean
public Exchange orderExchange() {
/**
* @param name
* @param durable
* @param autoDelete
* @param argument
*/
Map<String, Object> args = new HashMap<>();
DirectExchange exchange = new DirectExchange(EXCHANGE_NAME, true, false, args);
return exchange;
}
1.2 Queue持久化
durable參數(shù)設(shè)置為true
@Bean
public Queue queueDlx() {
/**
* @param name
* @param durable
* @param exclusive
* @param autoDelete
*
*/
Queue queue = new Queue(QUEUE_NAME, true, false, false);
return queue;
}
1.3 消息的持久化
將消息的投遞模式,BasicProperties 中的 deliveryMode 屬性)設(shè)置為 2
MessageProperties props = new MessageProperties();
props.setContentType(MessageProperties.CONTENT_TYPE_TEXT_PLAIN);
props.setContentEncoding("utf-8");
Message message = new Message("your message".getBytes(), props);
rabbitTemplate.send(EXCHANGE_NAME, ROUNTING_KEY, message, correlationData);
其中,MessageProperties源碼如下:
public class MessageProperties {
public static final BasicProperties MINIMAL_BASIC = new BasicProperties((String)null, (String)null, (Map)null, (Integer)null, (Integer)null, (String)null, (String)null, (String)null, (String)null, (Date)null, (String)null, (String)null, (String)null, (String)null);
public static final BasicProperties MINIMAL_PERSISTENT_BASIC = new BasicProperties((String)null, (String)null, (Map)null, 2, (Integer)null, (String)null, (String)null, (String)null, (String)null, (Date)null, (String)null, (String)null, (String)null, (String)null);
public static final BasicProperties BASIC = new BasicProperties("application/octet-stream", (String)null, (Map)null, 1, 0, (String)null, (String)null, (String)null, (String)null, (Date)null, (String)null, (String)null, (String)null, (String)null);
public static final BasicProperties PERSISTENT_BASIC = new BasicProperties("application/octet-stream", (String)null, (Map)null, 2, 0, (String)null, (String)null, (String)null, (String)null, (Date)null, (String)null, (String)null, (String)null, (String)null);
public static final BasicProperties TEXT_PLAIN = new BasicProperties("text/plain", (String)null, (Map)null, 1, 0, (String)null, (String)null, (String)null, (String)null, (Date)null, (String)null, (String)null, (String)null, (String)null);
public static final BasicProperties PERSISTENT_TEXT_PLAIN = new BasicProperties("text/plain", (String)null, (Map)null, 2, 0, (String)null, (String)null, (String)null, (String)null, (Date)null, (String)null, (String)null, (String)null, (String)null);
public MessageProperties() {
}
}
下一篇我們將介紹消費(fèi)端的操作。