html 圖片展示網(wǎng)站seo推廣騙局
出版商
“出版商”一詞在不同的上下文中有不同的含義。一般來(lái)說(shuō),在消息傳遞中 發(fā)布者(也稱為“生成者”)是應(yīng)用程序(或應(yīng)用程序?qū)嵗?#xff09; 發(fā)布 (生成) 消息。同一應(yīng)用程序也可以使用消息 因此同時(shí)也是消費(fèi)者。
消息傳遞協(xié)議還具有消息傳遞的持久訂閱的概念。 訂閱是通常用于描述此類實(shí)體的一個(gè)術(shù)語(yǔ)。消費(fèi)者是另一個(gè)問(wèn)題。 RabbitMQ 支持的消息收發(fā)協(xié)議同時(shí)使用這兩個(gè)術(shù)語(yǔ),但 RabbitMQ 文檔傾向于后者。
RabbitMQ 是一個(gè)消息傳遞代理。它接受來(lái)自發(fā)布者的消息,并路由它們 并且,如果有要路由到的隊(duì)列,則存儲(chǔ)它們以供使用或立即使用 向消費(fèi)者交付(如果有)。
發(fā)布者發(fā)布到的目標(biāo)因協(xié)議而異。在 AMQP 0-9-1 中, 發(fā)布商向 Exchange 發(fā)布內(nèi)容。在 AMQP 1.0 中,發(fā)布發(fā)生在鏈接上。 在?MQTT?中,發(fā)布者發(fā)布到主題。最后,STOMP?支持 各種目標(biāo)類型:主題、隊(duì)列、AMQP 0-9-1 交換。這包括 有關(guān)更多詳細(xì)信息,請(qǐng)參閱?協(xié)議特定的差異?部分。
發(fā)布消息必須路由到隊(duì)列(主題等)。隊(duì)列 (topic) 可能具有在線使用者。當(dāng)消息成功路由到隊(duì)列并且存在 如果在線消費(fèi)者可以接受更多投放,則消息將為 發(fā)送給消費(fèi)者。
嘗試發(fā)布到不存在的隊(duì)列(主題)將導(dǎo)致頻道級(jí) exception 替換為 和 render 嘗試的通道 on 以關(guān)閉。
消費(fèi)者?
“消費(fèi)者”一詞在不同的上下文中有不同的含義。通常,在消息傳遞的上下文中 而流式處理,Consumer 是使用和確認(rèn)消息的應(yīng)用程序(或應(yīng)用程序?qū)嵗?#xff09;。同一應(yīng)用程序還可以發(fā)布消息,從而同時(shí)成為發(fā)布者。
消息傳遞協(xié)議還具有消息傳遞的持久訂閱的概念。 訂閱是通常用于描述此類實(shí)體的一個(gè)術(shù)語(yǔ)。消費(fèi)者是另一個(gè)問(wèn)題。 RabbitMQ 支持的消息收發(fā)協(xié)議同時(shí)使用這兩個(gè)術(shù)語(yǔ),但 RabbitMQ 文檔傾向于 更喜歡后者。
從這個(gè)意義上說(shuō),使用者是消息傳遞的訂閱,它必須 在投放開(kāi)始之前注冊(cè),應(yīng)用程序可以取消。
RabbitMQ 是一個(gè)消息傳遞代理。它接受來(lái)自發(fā)布者的消息,并路由它們 并且,如果有要路由到的隊(duì)列,則存儲(chǔ)它們以供使用或立即使用 向消費(fèi)者交付(如果有)。
使用者從隊(duì)列中使用。為了使用消息,必須有一個(gè)隊(duì)列。 添加新的使用者時(shí),假設(shè)隊(duì)列中已經(jīng)有消息準(zhǔn)備就緒, 交貨將立即開(kāi)始。
在使用者注冊(cè)時(shí),目標(biāo)隊(duì)列可以為空。在那種情況下 當(dāng)新郵件排隊(duì)時(shí),將進(jìn)行首次投放。
嘗試從不存在的隊(duì)列中使用將導(dǎo)致通道級(jí)別的 exception 替換為 和 render 嘗試的通道 on 以關(guān)閉。
隊(duì)列?
RabbitMQ 中的隊(duì)列是消息的有序集合。消息以 (FIFO) (“先進(jìn)先出”)?方式入隊(duì)和出隊(duì) (交付給使用者)。
用通用術(shù)語(yǔ)定義隊(duì)列,它是一個(gè)順序數(shù)據(jù)結(jié)構(gòu),有兩個(gè)主要操作:項(xiàng)目可以在尾部排隊(duì)(添加)和從頭部出隊(duì)(消費(fèi))。
隊(duì)列在消息傳遞技術(shù)領(lǐng)域發(fā)揮著重要作用。許多消息收發(fā)協(xié)議和工具都假定發(fā)布者和使用者使用類似隊(duì)列的存儲(chǔ)機(jī)制進(jìn)行通信。
消息收發(fā)系統(tǒng)中的許多功能都與隊(duì)列相關(guān)。某些 RabbitMQ 隊(duì)列功能(例如使用者的優(yōu)先級(jí)和重新排隊(duì))可能會(huì)影響使用者觀察到的排序。
Streams?是 RabbitMQ 中提供的另一種消息收發(fā)數(shù)據(jù)結(jié)構(gòu)。Streams 提供與隊(duì)列不同的功能。
隊(duì)列屬性
隊(duì)列具有定義其行為方式的屬性。有一套 的強(qiáng)制屬性和可選屬性的映射:
- 名字
- 持久(隊(duì)列將在代理重啟后繼續(xù)存在)
- 獨(dú)占(僅由一個(gè)連接使用,當(dāng)該連接關(guān)閉時(shí),隊(duì)列將被刪除)
- 自動(dòng)刪除(當(dāng)最后一個(gè)使用者取消訂閱時(shí),將刪除至少有一個(gè)使用者的隊(duì)列)
- 參數(shù)(可選;由插件和代理特定的功能(如消息 TTL、隊(duì)列長(zhǎng)度限制等)使用)
請(qǐng)注意,并非所有屬性組合在實(shí)踐中都有意義。例如,自動(dòng)刪除 獨(dú)占隊(duì)列應(yīng)以服務(wù)器命名。這樣的隊(duì)列應(yīng)該是 用于特定于客戶端或特定于連接(會(huì)話)的數(shù)據(jù)。當(dāng)自動(dòng)刪除或獨(dú)占隊(duì)列使用已知(靜態(tài))名稱時(shí),在客戶端斷開(kāi)連接的情況下 并立即重新連接,則 RabbitMQ 節(jié)點(diǎn)之間將存在自然的爭(zhēng)用條件 這將刪除此類隊(duì)列,并恢復(fù)嘗試重新聲明它們的客戶端。 這可能會(huì)導(dǎo)致客戶端連接恢復(fù)失敗或異常,并造成不必要的混淆 或影響應(yīng)用程序可用性。