2013-07-31 49 views
4

將最新的Azure部署從分段交換到生產後,我需要阻止分段工作者角色訪問隊列消息。我可以通過檢測環境是否在代碼中進行暫存或生產來做到這一點,但是任何人都可以告訴我是否有任何其他方式來阻止登臺環境訪問和處理隊列消息?阻止Azure分段環境訪問隊列消息

感謝您的幫助! Mahesh

+0

我已經在下面回答了,但是出於好奇,你會如何檢測給定角色是否在代碼中執行或生產? – Dunc

回答

1

平臺上沒有任何東西可以做到這一點。這是一個應用程序/代碼的東西。如果應用程序具有訪問隊列的憑證(例如帳戶名稱和密鑰),那麼它正在執行編碼要做的事情。

1

有暫存環境中使用主存儲密鑰和生產環境中使用的輔助存儲密鑰。當您執行VIP交換時,您可以重新生成您的臨時環境正在使用的存儲密鑰,這將導致其不再具有訪問隊列的憑據。

請注意,這確實會引入計時問題。如果先執行交換,然後再更改存儲密鑰,則存在工作角色在兩次操作之間拾取消息的風險。如果您先更改密鑰然後再進行交換,那麼您的生產服務將不再從隊列中提取消息,將會有一兩秒鐘的時間。這取決於您的服務對於您的時間安排問題是否可以接受。

1

實際上,你可以檢測哪些部署插槽當前實例運行我詳細地描述如何在這裏做到這一點:https://stackoverflow.com/a/18138700/1424115

這真的不是那麼容易,因爲它應該是,但它絕對有可能。再生鍵

0

kwill的回答是一個很好的,但是我終於實現了這一點:

  1. 可選 - 通過改變它告訴給一個合適的配置鍵停止從聽隊列的生產工人的角色忽略的消息,然後重新啓動虛擬機(無論是通過管理門戶網站或通過殺死WaHostBootstrapper.exe)

  2. 發佈到上演環境(這將開始訪問隊列,這是很好的在我們的例子)

  3. 交換上演< - >生產通過Azure的

  4. 再次發佈,這次新上演環境(舊直播)

您現在已經運行最新版本的生產和分期輔助角色和爲隊列服務。這對我們來說是一件好事,因爲它給了我們兩倍的容量,而且既然舞臺正在運行,我們也可以使用它!

重要的是,您只使用分段作爲發佈方法來生存(如其意圖) - 爲測試/ QA目的創建一個全新的環境,其中有自己的存儲帳戶和消息隊列。