我有以下配置的RabbitMQ當消費者從RabbitMQ的,哪裏信道獲取消息預取消息駐留
prefetchCount:1 ACK模式:自動。
我有一個交換和一個隊列連接到該交換和一個消費者連接到該隊列。根據我的理解,下面的步驟將發生如果隊列有多條消息。
- 在一個通道上隊列寫入數據。
- 由於ack模式是自動的,只要隊列在通道上寫入消息,消息就會從隊列中刪除。
- 消息傳遞給消費者,消費者開始執行該數據。
- 由於Queue已經得到了前一條消息的確認,Queue將下一個數據寫入Channel。
現在,我的疑問是,假設消費者還沒有完成之前的數據呢。下一個數據隊列寫入通道會發生什麼?
另外,假設prefetchCount是10,並且我只有一次消費者連接隊列,這10個消息將駐留在哪裏?
很好的答案,清除了很多疑惑,將切換到pull.One更多的事情,在我們目前的項目中,我們有以下場景,假設在隊列中的任何時候我們有記錄如下A-> B-> C,記錄C只能被處理了,A已經被處理了。這個實現是一樣的嗎?如果我們發現它的前任處理過的記錄尚未處理,那麼我們再次排隊記錄(而不是發送-nack,將通過交換進行排隊)。這將使我們的隊列記錄爲C-> A-> B,現在C將在A之後處理。 – Nishat
感謝您的讚揚!如果您有其他問題,我建議您將問題張貼爲新問題,以便更方便地索取答案。我會評論說,所描述的情況似乎有點複雜的消息。 – theMayer