一. 區別
1.消息隊列能夠積壓消息,讓消費者可以按照自己的節奏處理消息,但是RPC不能.
2.消息隊列是一個異步的過程(生產者發送消息之后,不會等待消息的處理),RPC是一個同步的過程.
3.消息隊列的生產者不能得知誰消費了消息,消費結果是否成功,而RPC的調用者明確知道被調用者是誰,處理結果也能獲取到.
4.由於消息隊列在生產者和消費者之間還有一個queue節點,系統性能除了受自身因素影響外還受queue節點影響,而RPC沒有中間節點,,系統性能只受自己的影響.
二. 適用場景
由異同大致就能理解出兩者的適用場景是什么:
1.消息隊列能夠讓服務器的負載不會過高,降低了並發度,所以效率受到了影響,又由於消息隊列是一個異步的過程,且生產者不能得知消費者的信息,所以消息隊列一般用於實時性要求不高的花費時間的操作.
2.RPC是一個同步的過程,可能會因為突然高的並發量導致系統出問題,但是RPC具有很高的實時性,所以他一般用戶需要立即返回結果的操作.