Service Bus(トピック)への書き込み処理


全然参考となる資料が見つからなくて苦戦。。
結局公式ドキュメントにあったんだけどこれを見つけるのに時間がかかった。

解決していない事柄

Functionsから受け取った情報をSerivce Busに書き込むこと
Service Busの接続文字列をキーコンテナから取得すること

解決までの流れ

1.Service Busのデプロイ(Service Busの名前空間)
2.Service Busのトピック作成
⇒Service Bus 名前空間の共有アクセスポリシー(RootManageSharedAccessKey)からプライマリ接続文字列は入手可能

3.チュートリアルのprivatemessagesenderをコピペで関数アプリ(Functions)を作成するも動かず。

4.Service Bus キューの使用を発見し、Visual Stadio 2019(以降VSと表記)を導入して、無事解決。
(Visual Stadio 2019導入は割愛)

4-1.プロジェクトを作成し、パッケージの追加を実施

Service Bus NuGet パッケージの追加
新しく作成したプロジェクトを右クリックし、 [NuGet パッケージの管理] を選択します。
[参照] を選択します。 [Microsoft.Azure.ServiceBus] を検索して選択します。
[インストール] を選択し、インストールが完了したら、NuGet パッケージ マネージャーを閉じます。

4-2.サンプルコードをコピペ※以下の箇所だけ作成したServiceBusに合わせて更新

Program.cs
const string ServiceBusConnectionString = "Endpoint=sb://***********.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=***********";
const string QueueName = "samplequeue";

4-3.VS上で実行 ⇒ Service Bus キューの概要からアクティブなメッセージ数が増えていることを確認

4-4.プロジェクトを選択し、右クリック>発行
AppServicePlanなどが自動で作成されるのでしばらく待つ。
再度発行ボタンを押すと、Azure 側へデプロイされる。

4-5.Azureへのデプロイが完了したら、該当リソース(App Service)のWebジョブをクリック
4-6.ジョブを選択して、実行を押下 ⇒ Service Bus キューの概要からアクティブなメッセージ数が増えていることを確認

4-7.あれ、、増えてない。。ジョブがアベンドしている?!

4-8.ソースコード見てみると、Enter待ちになってる箇所あり。コメントアウトして、再度デプロイ

Program.cs
// Console.ReadKey();

4-9.Azureへのデプロイが完了したら、該当リソース(App Service)のWebジョブをクリック
4-10.ジョブを選択して、実行を押下 ⇒ Service Bus キューの概要からアクティブなメッセージ数が増えていることを確認

終了!