ConnectionFactory
ConnectionFactory是RabbitMQ服務(wù)掌握連接Connection生殺大權(quán)的重要組件
有了它厚掷,就可以創(chuàng)建Connection(org.springframework.amqp.rabbit.connection.Connection)
CachingConnectionFactory是僅有的默認(rèn)會(huì)創(chuàng)建一個(gè)能夠被應(yīng)用共享的連接代理无埃,下圖是CachingConnectionFactory的繼承關(guān)系
上篇提過(guò)探熔,在CachingConnectionFactory的構(gòu)造函數(shù)中齿税,可以賦值hostname帝火,username和passoword等
Channel這個(gè)概念應(yīng)該熟悉俗或,可以認(rèn)為是一個(gè)連接通道秘蛔,CachingConnectionFactory中默認(rèn)最多可以緩存25個(gè)Channel陨亡,也可以通過(guò)方法setChannelCacheSize()設(shè)置
下面是構(gòu)造CachingConnectionFactory和創(chuàng)建Connection的代碼
當(dāng)然傍衡,我們使用XML配置文件的方式也可以實(shí)現(xiàn)同樣的效果
這還沒(méi)完,使用了Spring-rabbitmq负蠕,我們還可以這樣定義
這是使用了RabbitMQ的命名空間定義的聪舒,這里除了定義hostname,username等虐急,還定義了channel-cache-size箱残,這就是我們前面說(shuō)的默認(rèn)值是25的屬性。
消息發(fā)送的確認(rèn)和返回
使用CachingConnectionFactory的方法setPublisherConfirms和setPublisherReturns設(shè)置為true止吁,則創(chuàng)建的Channel就會(huì)回傳這些屬性
Connection和Channel監(jiān)聽器
Connection和Channel分別有對(duì)應(yīng)的監(jiān)聽器接口ConnectionListener和ChannelListener被辑,在CachingConnectionFactory上可以注冊(cè)這兩個(gè)監(jiān)聽器的實(shí)現(xiàn)類。
這兩個(gè)接口可以監(jiān)聽有關(guān)Connection和Channel生命周期已經(jīng)相關(guān)事件敬惦,比如創(chuàng)建盼理、關(guān)閉等。
下面分別是ConnectionListener和ChannelListener的源碼
RabbitTemplate
Spring amqp有AmqpTemplate一個(gè)具體實(shí)現(xiàn)類俄删,那就是RabbitTemplate
可以使用RetryTemplate為RabbitTemplate配置重試相關(guān)的參數(shù)
通過(guò)XML形式配置重試參數(shù)
initialInterval是重試的重試間隔時(shí)間
maxInterval是重試最大間隔時(shí)間
multiplier是從初始值到最大的增長(zhǎng)倍數(shù)宏怔,其實(shí)我們還可以配置SimpleRetryPolicy來(lái)指定重試的次數(shù)
通過(guò)Java配置類形式配置重試參數(shù)
如果您覺(jué)得閱讀本文對(duì)您有幫助,請(qǐng)點(diǎn)一下“喜歡”按鈕畴椰,您的“喜歡”將是我最大的寫作動(dòng)力臊诊!如果您想持續(xù)關(guān)注我的文章,請(qǐng)掃描二維碼斜脂,關(guān)注JackieZheng的微信公眾號(hào)抓艳,我會(huì)將我的文章推送給您,并和您一起分享我日常閱讀過(guò)的優(yōu)質(zhì)文章帚戳。
?