截取自百度知道,回答者:gxt890106
在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方式。
