A. php 從rabbitmq consume 和 get的區別
以下是阿里雲查到的解釋
在RabbitMQ中消費者有2種方式獲取隊列中的消息:
a)一種是通過basic.consume命令,訂閱某一個隊列中的消息,channel會自動在處理完上一條消息之後,接收下一條消息。(同一個channel消息處理是串列的)。除非關閉channel或者取消訂閱,否則客戶端將會一直接收隊列的消息。
b)另外一種方式是通過basic.get命令主動獲取隊列中的消息,但是絕對不可以通過循環調用basic.get來代替basic.consume,這是因為basic.get RabbitMQ在實際執行的時候,是首先consume某一個隊列,然後檢索第一條消息,然後再取消訂閱。如果是高吞吐率的消費者,最好還是建議使用basic.consume。
簡單總結一下就是說:
consume是只要隊列裡面還有消息就一直取。
get是只取了隊列裡面的第一條消息。
因為get開銷大,如果需要從一個隊列取消息的話,首選consume方式,慎用循環get方式。