另一個使用非同步通訊的好處是可以進行一對多的通訊,假設有一個Product service會對後續的Category service和Inventory service要資料,以http方式,會依序發request到Category service-->接到response-->發request給Inventory service-->接到response, 雖然Category和Inventory service之間並無依賴關係,但仍要等待response才能進行下一個request, 透過一對多(pub/sub)的通訊方式,我們可以從request/response的長鍊解放出來, 變成併發(concurrency)和併行(parallel),有效的縮短整體的反應時間。
微服務常見的非同步通訊技術會使用Message broker,舉例來說像是RabbitMQ、Kafka、Azure Service bus等。
sender/producer將message寄送到RabbitMQ的Message queue,然後receiver/consumer持續監聽是否有它該接收的message,而將message從Message queue取出的行為稱為consume(消費一個message)
從wiki上來看,Message broker可以提供的功能有: