共用方式為


如何使用 Ruby 的佇列記憶體

小提示

試用 Microsoft Azure 儲存體總管

Microsoft Azure 儲存體總管 是一個免費的獨立應用程式,可讓您在 Windows、MacOS 和 Linux 上以視覺化方式處理 Azure 儲存體資料。

概觀

本指南說明如何使用 Microsoft Azure 佇列記憶體服務來執行常見案例。 這些範例是使用 Ruby Azure API 撰寫的。 涵蓋的案例包括 插入查看取得,以及 刪除 佇列訊息,以及 建立和刪除佇列

什麼是佇列記憶體?

Azure 佇列記憶體是一項服務,可用來儲存大量訊息,可透過 HTTP 或 HTTPS 的已驗證呼叫從世界各地存取。 單一佇列訊息的大小最多可達 64 KB,而佇列可以包含數百萬則訊息,最多可達記憶體帳戶的總容量限制。 佇列存儲通常用於建立待處理工作的清單,以便進行異步處理。

隊列服務概念

Azure 佇列服務包含下列元件:

Azure 佇列服務元件

  • 記憶體帳戶: 所有對 Azure 記憶體的存取都是透過記憶體帳戶完成。 如需儲存體帳戶的詳細資訊,請參閱儲存體帳戶概觀

  • 佇列:佇列包含一組訊息。 所有訊息都必須在佇列中。 請注意,佇列名稱必須全部小寫。 如需為佇列命名的詳細資訊,請參閱 為佇列和中繼資料命名

  • 訊息:大小上限為 64 KB 的訊息 (任何格式)。 訊息可以保留在佇列中的時間上限為 7 天。 在 2017-07-29 版或更新版本中,存留時間上限可以是任何正數或 -1 (表示訊息不會過期)。 如果省略此參數,則預設存留時間為七天。

  • URL 格式: 佇列可以使用下列 URL 格式尋址:http://<storage account>.queue.core.windows.net/<queue>

    下列 URL 指向圖表中的佇列:

    http://myaccount.queue.core.windows.net/incoming-orders

建立 Azure 儲存體帳戶

建立第一個 Azure 記憶體帳戶最簡單的方式是使用 Azure 入口網站。 若要深入了解,請參閱 建立儲存體帳戶

您也可以使用 Azure PowerShellAzure CLI或適用於 .NET 的 Azure 記憶體資源提供者來建立 Azure 記憶體帳戶。

如果您目前不想在 Azure 中建立記憶體帳戶,您也可以使用 Azurite 記憶體模擬器在本機環境中執行和測試程式代碼。 如需詳細資訊,請參閱 使用 Azurite 模擬器進行本機 Azure 記憶體開發

建立 Ruby 應用程式

建立 Ruby 應用程式。 如需指示,請參閱 在Linux上的App Service中建立 Ruby 應用程式

設定您的應用程式以存取記憶體

若要使用 Azure 記憶體,您必須下載並使用 Ruby Azure 套件,其中包含一組與記憶體 REST 服務通訊的便利連結庫。

使用 RubyGems 取得套件

  1. 使用命令行介面,例如 PowerShell(Windows)、終端機(Mac)或 Bash (Unix)。
  2. 在命令視窗中輸入 gem install azure 以安裝 Gem 和相依性。

匯入套件

使用您慣用的文字編輯器,將下列內容新增至您想要使用記憶體的 Ruby 檔案頂端:

require "azure"

設定 Azure 記憶體連線

Azure 模組會讀取環境變數 AZURE_STORAGE_ACCOUNT ,以及 AZURE_STORAGE_ACCESS_KEY 連線到 Azure 記憶體帳戶所需的資訊。 如果未設定這些環境變數,您必須先指定帳戶資訊,才能搭配下列程式代碼使用 Azure::QueueService

Azure.config.storage_account_name = "<your azure storage account>"
Azure.config.storage_access_key = "<your Azure storage access key>"

若要從 Azure 入口網站中的傳統或 Resource Manager 記憶體帳戶取得這些值:

  1. 登入 Azure 入口網站
  2. 流覽至您想要使用的記憶體帳戶。
  3. 在右側的 設定面板中,按一下 存取金鑰
  4. 在顯示的 [存取金鑰] 刀鋒視窗中,您會看到存取金鑰 1 和存取金鑰 2。 您可以使用其中一項。
  5. 按下複製圖示,將金鑰複製到剪貼簿。

如何:建立佇列

下列程式碼建立Azure::QueueService物件,讓您可以操作佇列。

azure_queue_service = Azure::QueueService.new

create_queue()使用方法來建立具有指定名稱的佇列。

begin
  azure_queue_service.create_queue("test-queue")
rescue
  puts $!
end

作法:將訊息插入佇列

若要將訊息插入佇列,請使用 create_message() 方法來建立新的訊息,並將它新增至佇列。

azure_queue_service.create_message("test-queue", "test message")

如何:查看下一則訊息

透過呼叫 peek_messages() 方法,您可以在佇列前面查看訊息,而無需將其從佇列中移除。 根據預設,peek_messages() 會瞄核單一訊息。 您也可以指定您想要查看的訊息數量。

result = azure_queue_service.peek_messages("test-queue",
  {:number_of_messages => 10})

如何:出列下一則訊息

您可以在兩個步驟中從佇列中移除訊息。

  1. 當您呼叫 list_messages()時,預設會在佇列中取得下一則訊息。 您也可以指定您想要取得的訊息數量。 從 list_messages() 傳回的訊息對從這個佇列讀取訊息的任何其他程式碼都看不見。 您將以秒為單位傳入可見逾時時間作為參數。
  2. 若要完成從佇列中移除訊息,您也必須呼叫 delete_message()

拿掉訊息的這個雙步驟程式可確保當程式代碼因硬體或軟體失敗而無法處理訊息時,程式代碼的另一個實例可以取得相同的訊息,然後再試一次。 已處理訊息後,程式碼便會立即呼叫 delete_message()

messages = azure_queue_service.list_messages("test-queue", 30)
azure_queue_service.delete_message("test-queue",
  messages[0].id, messages[0].pop_receipt)

如何:變更佇列訊息的內容

您可以直接在佇列中變更訊息的內容。 下列程式代碼會使用 update_message() 方法來更新訊息。 方法會傳回 Tuple,其中包含佇列訊息的快顯接收,以及代表訊息在佇列上可見時間的 UTC DateTime 值。

message = azure_queue_service.list_messages("test-queue", 30)
pop_receipt, time_next_visible = azure_queue_service.update_message(
  "test-queue", message.id, message.pop_receipt, "updated test message",
  30)

如何:清除佇列訊息的其他選項

有兩種方式可以自訂從佇列擷取訊息的方式。

  1. 您可以取得一批訊息。
  2. 您可以設定較長或較短的隱形逾時,讓您的程式碼有更多或更少的時間來完整處理每個訊息。

下列程式代碼範例會使用 list_messages() 方法,在一次呼叫中取得 15 則訊息。 然後,它會列印並刪除每個訊息。 它也會將不可見逾時設定為每則訊息五分鐘。

azure_queue_service.list_messages("test-queue", 300
  {:number_of_messages => 15}).each do |m|
  puts m.message_text
  azure_queue_service.delete_message("test-queue", m.id, m.pop_receipt)
end

如何:取得佇列長度

您可以取得佇列中訊息數目的估計。 方法 get_queue_metadata() 會傳回近似訊息計數和其他佇列元數據。

message_count, metadata = azure_queue_service.get_queue_metadata(
  "test-queue")

如何:刪除佇列

若要刪除佇列及其中包含的所有訊息,請在佇列物件上呼叫 delete_queue() 方法。

azure_queue_service.delete_queue("test-queue")

後續步驟

既然您已瞭解佇列記憶體的基本概念,請遵循這些鏈接來瞭解更複雜的記憶體工作。

如需本文所討論的 Azure 佇列記憶體與 如何使用服務總線佇列中所討論的 Azure 服務總線佇列之間的比較,請參閱 Azure 佇列記憶體和服務總線佇列 - 比較和對比