天天看點

java rabbitmq 應用場景_聊一聊rabbitMQ和kafka的應用場景

我們知道常用的2款消息中間件是rabbitmq和kafka,他們2者都有什麼各自的特點和應用場景呢?我們下面就聊一聊。

rabbitmq消息的發送,首先經過exchange,然後由exchange根據路由把消息投遞到綁定的隊列中,exchange有3中類型:

fanout:完全模式,消息會投遞到和exchange綁定的是以隊列中,使用于多個消費者應用的場景。

direct:直接模式,消息投遞根據發送的routingkey和bindingkey完全比對的隊列中,使用單消費者場景。

topic:topic模式,消息投遞模糊比對路由規則,可以投遞到多個比對的隊列中。

rabbitmq的消息可以持久化,也可以不持久化,消息消費完就被删除,不能重複消費。

rabbitmq cluster消息的存儲,一個隊列隻能在一台機器上存儲,無法實作分片存儲。

kafka消息發送topic,topic可以多個分區,同一個topic的消息可以分片儲存在不同的機器上,消息持久化存儲在磁盤上,一個消息可以重複消費,不用像rabbitmq一樣,有幾個消費者來消費這個消息,就需要幾個消息隊列來存儲這個消息。