rabbitMQ是如何保障消息可靠性的(二)

前一篇文中,我們說(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)端的操作。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容