搜尋
首頁Javajava教程RabbitMQ安裝(windows)實例教學

RabbitMQ安裝(windows)實例教學

Jul 18, 2017 pm 02:44 PM
rabbitmq學習筆記

管理後台

rabbitmq自帶管理後台,安裝後需要設定開啟
進入rabbitmq安裝目錄中的sbin目錄執行
rabbitmq-plugins enable rabbitmq_management
重啟rabbitmq服務生效
開啟http://localhost:15672/即可看到管理後台
使用者名稱密碼皆為guest

設定說明


使用命令列查看佇列清單

sbin>rabbitmqctl list_queues  
sbin>rabbitmqctl list_queues name messages_ready messages_unacknowledged

使用命令列查看exchange清單

sbin>rabbitmqctl list_exchanges

定義佇列

RabbitMQ 不允許你用不同的參數重新定義一個已經存在的隊列。

RabbitMQ doesn't allow you to redefine an existing queue with different parameters and will return an error to any program that tries to do that

#可靠點

要確保訊息不遺失,需要設定訊息持久化,同時佇列也必須為耐久的。

但這樣做仍然不是100%可靠,因為如果RabbitMQ 在接收訊息後、完成持久化之前崩潰,那麼就會導致訊息遺失。

重複處理

考慮如下場景(前提:佇列、訊息都是持久的):

  1. 消費者接收了一個訊息msgA,處理了一半,沒有完成、沒有發起ack確認;

  2. 此時RabbitMQ 崩潰了;

  3. 消費者完成了訊息msgA的處理;

  4. 當RabbitMQ 重啟後,發現msgA未被處理,於是msgA再次被傳送給消費者。

這種場景下,訊息msgA就會被處理兩次,所以消費者端應該要有防止重複處理的機制。

ACK

ACK確認,只是告訴RabbitMQ 消費者已經完成了對訊息的處理,而不是說邏輯上處理成功,即使是由於業務處理失敗了,也要進行ACK確認。因為一般而言業務上的原因導致失敗的話,重試是不解決問題的。只有網路中斷、機器斷電等故障所引起的失敗才有重試的必要。

防止業務負載集中到某個消費者

channel.basicQos(prefetchCount);

設定


prefetchCount=1,告訴RabbitMQ 每次只給一個消費者分配一個訊息,直到上一個分配給該消費者的訊息被確認處理完成。這樣一來,訊息就會根據實際處理情況,每次都分配給空閒的消費者。

關於預設Exchange

預設Exchange隱含地綁定到每個隊列,路由key為隊列名。不能對其進行顯式綁定或解綁。並且它是不可刪除的。

The default exchange is implicitly bound to every queue, with a routing key equal to the queue name. It is not possible to explicitly bind to, or unbind from the default exchange. It desocannotexchange. .

訊息傳遞的基本程序

發布者發布一個訊息

-->exchange接收訊息(如果發布者沒有指定特定的Exchange則使用預設Exchange) ,並根據exchange的類型,按照一定的路由規則,把訊息路由給每一個符合路由規則的隊列(如果沒有匹配的隊列,則訊息被丟棄)
-->隊列將訊息發送給訂閱該佇列的某一個消費者(如果沒有消費者則訊息保留在佇列中,知道有消費者消費該訊息)

Topic Exchange的通配符

星號符合一個字(注意,不是一個字母)

* (star) can substitute for exactly one word.井號符合任一單字

# ( hash) can substitute for zero or more words.

AMQP協定mandatory和immediate標誌位的作用

mandatory和immediate是AMQP協定中basic.pulish方法中的兩個標誌位,它們都有當訊息傳遞過程中不可達目的地時將訊息傳回給生產者的功能。具體區別在於:

1. mandatory標誌位元

當mandatory標誌位元設定為true時,如果exchange根據自身類型和訊息routeKey無法找到一個符合條件的queue,那麼會呼叫basic .return方法將訊息回饋給生產者;當mandatory設為false時,出現上述情形broker會直接將訊息丟掉。

2. immediate標誌位元

當immediate標誌位元設為true時,如果exchange在將訊息route到queue(s)時發現對應的queue上沒有消費者,那麼這條訊息不會放入隊列中。當與訊息routeKey關聯的所有queue(一個或多個)都沒有消費者時,該訊息會透過basic.return方法返還給生產者。

以上是RabbitMQ安裝(windows)實例教學的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Java平台獨立性:與不同的操作系統的兼容性Java平台獨立性:與不同的操作系統的兼容性May 13, 2025 am 12:11 AM

JavaachievesPlatFormIndependencethroughTheJavavIrtualMachine(JVM),允許Codetorunondifferentoperatingsystemsswithoutmodification.thejvmcompilesjavacodeintoplatform-interploplatform-interpectentbybyteentbytybyteentbybytecode,whatittheninternterninterpretsandectectececutesoneonthepecificos,atrafficteyos,Afferctinginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginging

什麼功能使Java仍然強大什麼功能使Java仍然強大May 13, 2025 am 12:05 AM

JavaispoperfulduetoitsplatFormitiondence,對象與偏見,RichstandardLibrary,PerformanceCapabilities和StrongsecurityFeatures.1)Platform-dimplighandependectionceallowsenceallowsenceallowsenceallowsencationSapplicationStornanyDevicesupportingJava.2)

頂級Java功能:開發人員的綜合指南頂級Java功能:開發人員的綜合指南May 13, 2025 am 12:04 AM

Java的頂級功能包括:1)面向對象編程,支持多態性,提升代碼的靈活性和可維護性;2)異常處理機制,通過try-catch-finally塊提高代碼的魯棒性;3)垃圾回收,簡化內存管理;4)泛型,增強類型安全性;5)ambda表達式和函數式編程,使代碼更簡潔和表達性強;6)豐富的標準庫,提供優化過的數據結構和算法。

Java真的平台獨立嗎? '寫一次,在任何地方運行”如何起作用Java真的平台獨立嗎? '寫一次,在任何地方運行”如何起作用May 13, 2025 am 12:03 AM

javaisnotirelyplatemententedduetojvmvariationsandnativecodinteinteration,butitlargelyupholdsitsitsworapromise.1)javacompilestobytecoderunbythejvm

揭示JVM:您了解Java執行的關鍵揭示JVM:您了解Java執行的關鍵May 13, 2025 am 12:02 AM

thejavavirtualmachine(JVM)IsanabtractComputingmachinecrucialforjavaexecutionasitrunsjavabytecode,使“ writeononce,runanywhere”能力

Java仍然是基於新功能的好語言嗎?Java仍然是基於新功能的好語言嗎?May 12, 2025 am 12:12 AM

Javaremainsagoodlanguageduetoitscontinuousevolutionandrobustecosystem.1)Lambdaexpressionsenhancecodereadabilityandenablefunctionalprogramming.2)Streamsallowforefficientdataprocessing,particularlywithlargedatasets.3)ThemodularsystemintroducedinJava9im

是什麼使Java很棒?關鍵特徵和好處是什麼使Java很棒?關鍵特徵和好處May 12, 2025 am 12:11 AM

Javaisgreatduetoitsplatformindependence,robustOOPsupport,extensivelibraries,andstrongcommunity.1)PlatformindependenceviaJVMallowscodetorunonvariousplatforms.2)OOPfeatureslikeencapsulation,inheritance,andpolymorphismenablemodularandscalablecode.3)Rich

前5個Java功能:示例和解釋前5個Java功能:示例和解釋May 12, 2025 am 12:09 AM

Java的五大特色是多態性、Lambda表達式、StreamsAPI、泛型和異常處理。 1.多態性讓不同類的對象可以作為共同基類的對象使用。 2.Lambda表達式使代碼更簡潔,特別適合處理集合和流。 3.StreamsAPI高效處理大數據集,支持聲明式操作。 4.泛型提供類型安全和重用性,編譯時捕獲類型錯誤。 5.異常處理幫助優雅處理錯誤,編寫可靠軟件。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。