簡體   English   中英

多環境多實例場景下的MassTransit和SNS/SQS

[英]MassTransit and SNS/SQS in multi-environment and multi-instance scenarios

我對 .NET 中的 MassTransit 及其與 AWS SNS/SQS 的集成比較陌生。 文檔和教程很好,但像往常一樣,細節決定成敗。

我特別不確定在具有多個環境的環境中配置 MassTransit 的最佳方法是什么,例如,開發、暫存、生產和生產環境中的多個應用程序實例。

多環境素描

到目前為止,這是我所知道的:

  • 對於不同的環境,為每個消息和每個環境創建一個專用的 SNS 主題,例如development-my-eventproduction-my-event
  • 端點必須是唯一的。 因此,為應用程序中的每個消費者創建一個單獨的端點,例如development-consumer1-my-event 不同應用程序中的第二個消費者將獲得端點development-consumer2-my-event
  1. 現在假設有多個人同時在應用程序上工作,為了避免消息沖突,他們也需要自己的主題和隊列,例如development-user123-my-event 這是通往 go 的有效途徑嗎?
  2. 生產代碼在集群環境中運行,即任何應用程序都會有多個實例。 我們是否必須讓每個應用程序的端點更加獨特,比如添加另一個標識符,以便隊列名稱不沖突?
  3. 希望情況並非如此,我假設我可以啟動許多相同的消費者來收聽相同的端點,這(希望)也可以解決我只會處理其中一個消費者的問題,例如一條命令消息。

非常感謝對我的想法有任何見解,謝謝!

迄今為止:

  • 實施自定義實體和端點名稱格式化程序以區分不同的環境。
  • 不同開發機器的格式化程序進一步多樣化
  • 指定為命令隊列和主題使用“.fifo”
  1. 是的,您需要為每個開發人員添加另一個鑒別器。 不確定我是否會這樣做,我可能只會使用localstack並在本地開發。

  2. 如果通過多個實例,您的意思是通過同一隊列上的競爭消費者進行橫向擴展以實現負載平衡,這是默認行為。 如果您需要在多個應用程序中將事件分散到同一個消費者,您將需要 scope 它們或在端點名稱格式化程序上使用一些前綴。

  3. 如上所述,如果將服務擴展到多個實例,則競爭消費者是默認設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM