Service Bus トピックとは

トピックとは トピックとはキューと同じくアプリケーション、サービス間の仲介役となるService Busの機能の一つですがキューと違うところは送信側によって送信されたメッセージを受信する側は複数でも良いということです。 「embed」https://azure.microsoft.com/ja-jp/documentation/articles/service-bus-dotnet-how-to-use-topics-subscriptions/[/embed] 送信側によって送信されてメッセージは1つのトピックとして扱われ、それをサブスクライブしている複数の受信者に渡されます。 このときサブスクライバーにはメッセージの仮想的なキューが渡されます。他のサブスクライバーがキューを処理しても自身の仮想キューには影響がありません。  

Service Bus キューとは

キューとは Service Busキューとはあるアプリケーション、サービス間の仲介役となるServiceBusの機能の一つで、その名の通りFirst In First Outなメッセージキューです。 キューなので送信側は受信側が受信するのを待つ必要がありません。 受信側は溜まったキューから好きなタイミングでデータを逐次取り出していくことができます。 このとき、メッセージを受信して処理できるメッセージ コンシューマーは、メッセージ 1 件につき 1 つだけです。 https://azure.microsoft.com/ja-jp/documentation/articles/service-bus-dotnet-how-to-use-queues/ とあるのでおそらく、受信側は一つのメッセージキューにつき1つだけ。つまり1つのキューを複数のクライアントで同時に受信することはできないと考えられます。  

自称教育者シリーズその2 – 過去の経験をアドバイスとして語る

なぜかシリーズ化してしまった自称教育者に対する教育論ですがこの間大学の先輩と話す機会があってその時に自称教育者シリーズに当てはまるパターンを思い出したので書きます。 過去の経験をアドバイスとして語る さて今回書くパターンですが主に仕事で教育をしている人というよりは先輩、上司などに多いと思われるパターンを書きたいと思います。 まず後輩の人に対し何かしらのアドバイスを考える会があったとします。そのとき、よくある例として 俺達の時代に比べたら今の時代なんでだいぶマシだよ。そもそも今の時代はなぁ..俺達の時代と比べて~~が無くてすごく楽で(ry というようなことを言う人がいるわけです。 これも自称教育者に当てはまるパターンで後輩の聞きたいアドバイスは関係なく、先輩が話したい過去の経験を“アドバイス”として話してしまってるわけです。 当然後輩にとっては別に今は昔と違うのだからそれはアドバイスにはならないし聞いてても何の役にも立たないわけです。(昔のことが今につながっている場合は例外です) しかし先輩にとっては自分の過去の辛かった経験、体験を後輩に語ることで自分がいかに苦労したか、そして今がどれだけ恵まれているかを語って気持ちよくなりたいわけです。 このパターンに当てはまる先輩が、後輩に対してこのような自己満足なアドバイスをすることで後輩は望んでいない教育をうけることになってしまうわけです。 雑談、愚痴としてならOK じゃあ現在に関係ない過去の経験を語ることは悪かというとそういうこともなく、単純な飲み会の雑談、先輩の愚痴としてならOKだと私は思います。 問題は後輩にとって良い話かどうかです。 もし後輩が先輩の雑談を聞くことを目的とするなら面白話としてそのような過去の経験を語るのはアリでしょう。 しかしもし後輩が“アドバイス”を求めているならば、今に関係ない過去の話は避けるべきです。 まあおそらく先輩を立てるために後輩は我慢して聞いてくれるでしょうがそういうことを思いやれる先輩、上司がいてくれるほうが嬉しいわけです。 まとめ アドバイスと称して現在に関係ない過去の経験を語る上司、先輩も自称教育者 アドバイスとして語る場ならば現在に関係のない話は避けるべき そういえば自称教育者のような下のものを思わずに自分が気持ちよくなるためだけに行う行為のことをパターナリズムと呼ぶらしいですね。 パターナリズム(英: paternalism)とは、強い立場にある者が、弱い立場にある者の利益になるようにと、本人の意志に反して行動に介入・干渉することをいう。日本語では家父長主義、父権主義などと訳される。語源はラテン語の pater(パテル、父)で、pattern(パターン)ではない。対義語はマターナリズム(maternalism)。 パターナリズム – Wikipedia https://ja.wikipedia.org/wiki/%E3%83%91%E3%82%BF%E3%83%BC%E3%83%8A%E3%83%AA%E3%82%BA%E3%83%A0 ちゃんとそういうことを指す言葉があることにびっくりです。

.Netでキューにデータを送受信する

SDKをインストールする NugetからWindowsAzure.ServiceBusと検索してインストールします。 ちなみにUniversal Windows PlatformはSDKが対応していないためインストールできません。 接続文字列を取得する 接続ポリシーを作成します。 Service Busの構成から共有アクセスポリシーを新しくつくります。 名前を「testpolicy」としてアクセス許可を「管理、送信、リッスン」とします。 ポリシーを作成するとキューの接続情報を取得できます。 ここに書いてあるtestpolicyの値をコピーしておきます。 受信する 接続文字列を使ってQueueClientを作成します。 第二引数はQueueの名前を設定します。 OnMessageメソッドでメッセージがキューに入った時のデリゲートを取得できます。 var client = QueueClient.CreateFromConnectionString(“{connection string}”); , “testgariqueue”); client.OnMessage((data)=> { var str = data.GetBody<string>(); Console.WriteLine(str); }); 送信する 同じようにQueueClientを取得します。 BrokeredMessageクラスを作成し、Queueメッセージを作成します。 そしてSendAsyncメソッドでメッセージを送信します。 var client = QueueClient.CreateFromConnectionString(“{connection string}”); , “testgariqueue”); var message = new BrokeredMessage(“hoge”); await client.SendAsync(message); メッセージを送受信できました。 Azure Service Busまとめ

キューを作成する

Service Bus名前空間を作成する から名前空間を作成する方法を参照してください。 キューを作成する 名前空間を作成したら、下の新規からキューを選択してください。 カスタム作成を選択します。 任意の名前とリージョン、サブスクリプションを選択します。 名前空間は先程作成したものを選択しましょう。 オプションはデフォルトのままにします。 キューの作成が完了しました The negative implications of technology advances often sneak up on families and individuals, catching them completely off free iphone spy app within www.spying.ninja guard