Azure Service Busに対してApache JMeter™からメッセージを送信する

Azure Service Busで大量のメッセージを受けてから後続に流す処理のテストをするために、Apache JMeter™を利用する方法を紹介します。

Azure Service BusのパフォーマンステストをJMeterで実施することはあまりないかもしれませんが、Azure Service Busが大量のメッセージを受け後続のコンポーネントに流す一連の処理のテストのために、JMeterで大量のメッセージを発生させることができます。

ここでは、弊社で作成したJMeterのAzure Service Busプラグインを利用して、Azure Service Busにメッセージを投げる方法を紹介します。

なお今回は、Azure Service BusにAMQPプロトコルでShared access signatureを利用してアクセスしています。

設定概要

  1. Azure Service Bus用JMeterプラグインを導入
  2. スレッドグループを追加
  3. Azure Service Bus Samplerを追加
  4. 実行結果を参照するリスナーを追加
  5. テストを実行

設定詳細

  1. Azure Service Bus用JMeterプラグインを導入 Azure Service BusにAMQPでメッセージを送信するために、Microsoft Azure plugin for Apache JMeter™のAzure Service Bus Samplerプラグインを導入します。
    1. プラグインをダウンロード Webブラウザを利用して以下のページから最新のプラグイン(jmeter-plugins-azure-servicebus-{version}.jar)をダウンロードします。
      https://github.com/pnopjp/jmeter-plugins/releases

    2. ダウンロードしたファイルをJMeterのプラグイン用ディレクトリに配置
      先ほどダウンロードしたjarファイルを $JMETER_HOME/lib/ext にコピーします。

      $ cp jmeter-plugins-azure-servicebus-{version}.jar /usr/local/jmeter/lib/ext
      
    3. JMeterを起動または再起動します。

  2. スレッドグループを追加
    Test Planに"スレッド グループ"を追加します。
    Add (追加) > Threads (Users) > Tread Group (スレッド グループ)
  3. Azure Service Bus Samplerを追加
    追加したスレッド グループに"Azure Service Bus Sampler"を追加します。
    Add (追加) > Sampler (サンプラー) > Azure Service Bus Sampler
    Azure Service Bus Sampler
    • Connection/Transaction: 今回は「Create New Connection」を選択
    • Service Bus Namespace: メッセージ送信先Azure Service Bus名前空間 (ex. demo-sbq.servicebus.windows.net)
    • Send messages to: Queueに対して送信するか、Topicに対して送信するかを選択
    • Queue Name / Topic Name: メッセージ送信先QueueまたはTopicの名前
    • Protocol: 「AMQP」か「AMQP over Web Sockets」から送信プロトコルを選択 (Proxyを通るネットワークの中でJMeterを動かす場合は「AMQP over Web Sockets」を選択する必要があるかも)
    • Auth type: 今回は「Shared access signature」を選択
    • Shared Access Policy: 共有アクセスポリシー名
      Service Bus名前空間か、QueueあるいはTopicの共有アクセスポリシーに設定されているポリシー名
    • Shared Access Key: 対象の共有アクセスポリシーのキー
    • Create transaction before sending messages: 今回はOFF
    • Messages
      複数のメッセージを一括して送信できます。
      • message type: 送信するメッセージのタイプ。今回は「String」を選択。
      • message: 送信するメッセージ (ex. “Hello, Azure Service Bus!”)
      • message Id, session Id, partition key: メッセージに指定するパラメータ。今回は未入力。
  4. 実行結果を参照するリスナーを追加
    Test Planかスレッドグループに"View Results Tree (結果をツリーで表示)“リスナーを追加します。 Add (追加) > Listener (リスナー) > View Results Tree (結果をツリーで表示)
  5. テストを実行
    Run (実行) > Start (開始) でテストを実行します。
    Azure Portalで該当のService Busに要求やメッセージが届いていることを確認します。
    Azure Service Bus - Overview

参考) サンプル テストプラン ファイル

以上、今回は、Apache JMeter™でAzure Service Busにテストをする基本的な方法を紹介しました。

【宣伝】
AzureでJMeterを使うなら簡単構築Load Tester Powered by Apache JMeter™