iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 10
0
Software Development

.Net微服務輕旅行30天系列 第 10

Day 10 RabbitMQ的一些小筆記

  • 分享至 

  • xImage
  •  

Producer and consumer

Producer發送的message包含兩個部分

  • payload: consumer會收到的內容
  • label: 給RabbitMQ決定那個Consumer會收到的內容

RabbitMQ的Channel

TCP conection的建立跟關閉會花費蠻多的資源,RabbitMQ採用channel的概念,在同一條TCP connection中設立許多的channel,不同的執行緒可以藉由使用不同的channel做出訊息隔離,同時又可以共用同一條TCP connection

Consumer直到message處理完畢再進行確認

在RabbitMQ裡面,consumer接到message後仍需進行確認,通知queue該message已經被處理,queue才會移除該message。 此外還有一個特性,若RabbitMQ已發送訊息給consumer,該consumer沒有進行確認,則RabbitMQ不會再發訊息給該consumer直到進行確認。就使用上來說處理時間較長或需要較多資源的request,應該等到處理完畢再進行確認,避免consumer負載過高。

exchange的不同

一般會使用到的exhange應該是direct、fanout、topic

  • direct: 依據routingKey將message轉到指定的queue
  • fanout: pub/sub模式的實踐,先將queues綁定到指定的fanout exchange,當message傳送到該fanout exhange時,會自動推播到預先綁定的queues
  • topic: 有點像網頁常見的路由規則,依據你的routingKey的字串規則(像是 ??.test 之類的),傳送message到綁定該命名規則的queues

上一篇
Day 9 非同步通訊小小練習 - with RabbitMQ
下一篇
Day 11 微服務的自我保護與重試機制-- circuit breaker
系列文
.Net微服務輕旅行30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言