消息服務器解決的問題服務器
1.性能問題,把一些與主業務無關(不須要便可執行完成)的功能經過消息的方式執行能夠大大縮短主業務響應時間:在執行主業務的時候只須要將這些業相關的數據保存到消息隊列,等待專門的服務從隊列中獲取執行便可。微服務
2.模塊解耦,微服務,模塊只負責本身模塊相關的業務,其餘下游單據生成之類的功能直接丟給消息服務器,由下游服務讀取執行。性能
3.秒殺:設置消息服務隊列數量上限達到限量的效果,用戶端只須要將相關數據丟入消息服務器便可(相似第一點),後續具體秒殺業務執行由下游服務讀取消息隊列執行,這樣能夠大大縮短秒殺響應時間。 隊列
消息服務抽象路由
JMS 消息隊列
點對點,一個消息發送至惟一的消息接收者,業務只被執行一次。io
發佈訂閱,一個消息能夠被多個訂閱,多個接受者處理同一個消息。channel
AMQP秒殺
高級消息隊列協議,跨平臺的消息規範,細化了發佈訂閱模式。數據
AMQP 消息抽象
Exchanges 交換器,用於路由消息
Queues 消息隊列,消息載體,存儲和讀取消息源
connections 鏈接
channels 信道
發送一條消息:指定一個交換器,指定一個key,由交換器根據key,根據交換器類型以及綁定規則路由到具體的隊列
獲取一條消息:直接從指定消息隊列獲取