SlideShare una empresa de Scribd logo
1 de 41
Descargar para leer sin conexión
MQTTとAMQPと
.NET
terurou
2015/02/07
自己紹介
1
自己紹介/所属等
• デンキヤギ株式会社
• 代表取締役
• 社員, フリーランス, 協業等 募集してます
• DSTokai管理人
• 東海地方のメタコミュニティ
• IT勉強会カレンダーっぽいやつの東海地方版
• NGK(名古屋合同懇親会)
• エンジニア向けクロスコミュニティ忘年会
• ここ数年は100人前後の参加者
2
自己紹介/技術領域
• フロントエンドアーキテクト(自称)
• JavaScript(Haxe), WPFあたりがわりと得意
• 周辺にGUIできる人が居なかった結果…
• 普通のアーキテクト歴も5年ぐらいはある
• 大量データ×フロントエンド
• 100万件を操作する高速なExcelみたいなヤツとか…
• フロントエンドに限らず、バックエンドも最適化
3
はじめに
4
今日のネタについて
• 最近、お仕事でMQTTとAMQPについて調べる
機会があったので、まとめてきました
• .NETの勉強会なので、.NETにも少し絡めますが、
大半はMQTTとAMQPの話です
5
予備知識
6
MQTT, AMQPの雑な説明
• 通信プロトコルの一種
• HTTP, FTP等と同じアプリケーション層のプロトコル
• メッセージ転送 (MQ)
• IoT/M2Mでの利用も想定されている
• デバイス - サーバ間で小さなデータを送受信
• 世間的にはMQTTの方がIoT向けっぽいけど、
Microsoft的にはAMQP (後述)
7
MQ : Message Queue
• メッセージ指向
• Message Passing + Queue
• 複数オブジェクト間でのメッセージ受け渡し
• 受け取ったメッセージをQueueに格納
• 非同期・疎結合
• 送信側はメッセージ送信までを考えればよい
• 受信側はQueueの消費だけを考えればよい
• 分散システム・非同期処理がシンプルに書ける
8
MQの移り変わり
• 10-15年ぐらい前
• MSMQ
• JMS
• わりと最近
• AMQP
• MQTT
• STOMP
• ZeroMQ
• etc...
9
Publish/Subscribeモデル
• Publisher : メッセージ発信者
• Subscriber : メッセージ購読者
• Broker : メッセージ仲介者
10
・・・
Publisher
Broker / Queue
Subscriber
Publish/Subscribeモデルの補足
• Brokerは存在する・しないパターンがある
• Brokerモデル vs Brokerlessモデル
• このスライドではBrokerモデルを前提に解説
• ReactiveExtensionsもPublish/Subscribeモデル
11
MQ利用例
• メッセージ配信基盤
• 1:1, 1:N, 配信順序, エラー再送, ...全部MQ任せ
• 応用で資産や設定情報の配布とか
• Job Queue
• 時間のかかる処理をWorkerに処理依頼
• 一時的な処理殺到時の負荷分散、キューイング
• ログ収集サービス、SlideShareライクサービスなど
• メッセージはとりあえず待ち行列に貯める
• 待ち行列が増えすぎたら一時的にWorkerを増やす
12
MQTT
13
MQTT : MQ Telemetry Transport
• 軽量・省電力なプロトコル
• 1対Nに特化したメッセージ配信
• 低速・不安定なネットワークでの利用を想定
• 2010年に仕様公開・ロイヤリティフリー
• プロトコル自体は1999年から存在し、枯れている
• IBMが主導的な立場
• 仕様策定、商用製品の提供
14
軽量・省電力なプロトコル
• 軽量プロトコル
• ヘッダサイズが最小で2byte
• シンプルなプロトコルシーケンス
• HTTPとの比較 (IBMの資料による)
• トラフィック10-100分の1 → スループット10-100倍
• 消費電力 10分の1以下
15
1対Nに特化したメッセージ配信
• Publish/Subscribeモデル
• TopicベースでPublish/Subscribe
• “/”区切りの階層構造(ファイルパスっぽい)
• Subscribe時にワイルドカードで指定可
• /japan/tokyo/device1/cpu
• /japan/tokyo/+/meory ←部分一致
• /japan/tokyo/device1/# ←以下全て
16
低速・不安定なネットワークでの利用を想定
• QoS : Quality of Service
• Durable subscribe
• LWT : Last Will &Testament, 遺言状
• 単にWillと表記するケースも
• Retain : Retained Publication
17
QoS : メッセージ配信の品質レベル
• QoS 0 : 最高1回
• メッセージが確実に届く保証はない
• 配信失敗しても再送を行わない
• QoS 1 : 最低1回
• 必ずメッセージは届くが、重複する可能性がある
• QoS 2 : 必ず1回
• 必ずメッセージが届き、重複もしない
• 当然、QoS 0の方が処理は軽い
18
Durable subscribe
• メッセージ再配信機能
• 意図せずにSubscriberの通信が断絶
• その後、当該Subscriberが再接続
• 切断~再接続までに発生したメッセージを再送
• QoS 1, 2のメッセージを再配信
• 明示的なdisconnect, unsubscribeを行った場合は
再配信されない
19
LWT
• ClientはBroker接続時にLWTを設定可能
• Clientが通信を切断時にメッセージを配信する
• 通信死活監視を行っていて、意図しない切断時にも
ちゃんとメッセージが配信される
• LWTにもQoSを設定可能
20
Retain
• ClientがSubscribeする際に、最後に配信された
メッセージを取得できる
• Brokerは最後のメッセージのみは必ず保存する
• 逆説的に、エラー再接続ではないケースでは
古いメッセージを取得することはできない
21
主なMQTT Broker
• IBM MessageSight (商用,ハードウェア)
• IBM WebSphere MQ Telemetry (商用)
• 時雨堂 Akane (商用)
• Mosquitto (OSS)
• RabbitMQ (OSS, Plugin使用)
• etc ...
22
MQTT over WebSocket
• WebSocket経由でMQTT接続するライブラリも
存在する
• Paho JavaScript Client
• MQTT Brokerの前にWebSocket Gatewayを配置
• Lighttpdでブリッジできることは確認した
• たぶんNginx等のロードバランサーでもOKなはず
23
MQTTの弱いところ
• シンプルな仕様のため、できないことは多い
• Job Queueは作れない
• Subscriberが接続してくる前にPublisherが送信した
メッセージは最後の一つしか残らない(Retain)
• 1対1 メッセージ配信が考慮されていない
• 認証の仕様が明確には定められていない
• Brokerごとの実装に依存
• 認証機能をサポートしていないBrokerも多い
• OSSのBroker実装の層が薄い
24
MQTTと.NET
• MQTT .NET Client
• Paho(M2Mqtt), WinRTにも対応
• MQTTDotNet
• nmqtt
• MQTT .NET Broker
• GnatMQ
• 完成度がまだ低いので、素直にMosquittoか
RabbitMQか商用Brokerを使った方が良い
25
M2Mqtt, GnatMQの実装が微妙っぽい話
• ソケットが同期通信で実装されている
• パフォーマンス上の問題を抱えていそう…
• WinRT版で無理やり同期処理…
• Task<T>.Result で、非同期処理を同期待ち合わせ…
• おそらく後付けで #ifdef したせい
26
AMQP
27
AMQP : Advanced Message Queuing Protocol
• Enterpriseに対応できるプロトコル
• 高信頼性
• 高度なメッセージ配信
• アクセス制御
• 相互運用性が高い
• 仕様がオープン(OASIS)
• ワーキンググループのメンバーが豪華
28
高信頼性
• メッセージ永続化
• Publisherが送信したメッセージをBrokerが永続化
• 仮にBrokerが死んでも、再起動で復元できる
• トランザクション
• Subscriber側のメッセージを受け取る一連の処理を
トランザクションを使って記述できる
• tx.select, tx.commit, tx.rollback
• メッセージは受け取れたが、後続処理でエラー発生
というケースでも、メッセージがロストしない
29
高度なメッセージ配信
• Exchange (Direct, Fanout, Topic, Header)
• Priority Queue
• 優先度の高いメッセージを他より先に配信
• QoS, Prefetching
• メッセージを受け取れるSubscriber数を制限
• 分散JobQueueを作るときに必須
• immediate
• Subscriberが存在していないときに配信できない
30
Exchange
• Direct
• 特定のSubscriberのみに配信, 1:1
• Fanout
• 全てのSubscriberに配信, 1:N (1:All)
• Topic
• 特定のTopicのSubscriberのみに配信, 1:N
• Header
• Header(KeyValue)の組み合わせで配信先を特定, 1:N
31
アクセス制御
• “virtual host” + ACL
• ACL : userごとのRead/Write権限
• virtual hostごとにACLを設定
• いわゆるマルチテナント的な分割もできる
32
相互運用性
• 実装面の仕様が明確化されている
• メッセージフォーマット仕様が厳密
• 仕様書にTypeSystemの章とかある
• セキュリティ・アクセス制御等も明確に仕様化
• 複数プログラミング言語、ベンダー間の相互運用に
問題が生じないようになっている
• ライブラリAPIについては規定なし
• JMSでは逆にAPIを定義するが、実装は未定義
33
ワーキンググループのメンバーが豪華
• テクノロジ系
• Cisco, Red Hat, VMware, Microsoft, ...
• 金融(証券)系
• Bank of America, JP Morgan, Goldman Sachs, Barclays,
CREADIT SUISSE, ....
• 金融系が沢山いる=金融系で使われている
• トレーディングシステムでのメッセージング基盤
• 以前はJMSだったらしい
34
主なAMQP Broker
• RabbitMQ
• AMQPといえばRabbitMQ
• Apache ActiveMQ, Apollo
• Apache Qpid (, Red Hat Enteprise MSG)
• IBM MQ Light
• Microsoft Azure Service Bus & Event Hubs
• Service Bus for Windows Server
35
AMQPの弱いところ
• 高機能な反面、仕様が複雑
• “高機能・高信頼性”と”性能”がトレードオフ
• MQTT等のシンプル系プロトコルとの比較
• 要件によっては、NATSやKafka等も視野にいれる
• トレードオフとはいえ…
• 金融系で実績があることは重要
• RabbitMQは完成度が高く、クラスタ構成が前提
• MQTT Brokerでは商用とOSSの差が激しい
36
AMQPと.NET
• AMQP .NET Client
• Broker製品ごとにライブラリが存在
• RabbitMQ .NET Client (WCFもいける)
• Qpid WCF
• Azure SDK, ...
• AMQP .NET Broker
• 少なくともOSSは無いっぽい
• 素直にRabbitMQかService Busを使いましょう
37
AMQPとAzure Event Hubs
• Azure Event HubsはIoT用サービスらしい
• AMQPとHTTPプロトコルをサポートしている
• IoTデバイスのバッテリーに優しくない気が…
• AMQPプロトコルは重い (MQTTとの比較)
• なんでMQTTサポートしてないんだろ…
38
まとめ
39
まとめ
• MQTTとAMQPはMQのプロトコル
• それぞれの特徴は全然違う
• MQTT : シンプル・省電力
• AMQP : 高機能・高信頼性
• .NETからはどちらのプロトコルも使える
• Microsoft的にはAMQP推し
• MQTTの.NET Clientの品質は検証が必要
• MosquittoのBindingを作るのもありかも…
40

Más contenido relacionado

La actualidad más candente

モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなKentaro Matsui
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjugYahoo!デベロッパーネットワーク
 
Ingressの概要とLoadBalancerとの比較
Ingressの概要とLoadBalancerとの比較Ingressの概要とLoadBalancerとの比較
Ingressの概要とLoadBalancerとの比較Mei Nakamura
 
Java でつくる 低レイテンシ実装の技巧
Java でつくる低レイテンシ実装の技巧Java でつくる低レイテンシ実装の技巧
Java でつくる 低レイテンシ実装の技巧 Ryosuke Yamazaki
 
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps OnlineGKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps OnlineGoogle Cloud Platform - Japan
 
Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)
Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)
Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)NTT DATA Technology & Innovation
 
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話Yuta Shimada
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean ArchitectureAtsushi Nakamura
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Etsuji Nakai
 
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?naoki koyama
 
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Shin Ohno
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方Yoshiyasu SAEKI
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションMasahiko Sawada
 
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールこんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールdcubeio
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームKouhei Sutou
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!Tetsutaro Watanabe
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較Akihiro Suda
 

La actualidad más candente (20)

モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
 
Ingressの概要とLoadBalancerとの比較
Ingressの概要とLoadBalancerとの比較Ingressの概要とLoadBalancerとの比較
Ingressの概要とLoadBalancerとの比較
 
Java でつくる 低レイテンシ実装の技巧
Java でつくる低レイテンシ実装の技巧Java でつくる低レイテンシ実装の技巧
Java でつくる 低レイテンシ実装の技巧
 
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps OnlineGKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
 
Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)
Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)
Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)
 
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
 
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
 
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールこんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 

Destacado

Mozillaの報奨金制度で100万円ほど稼いだ話
Mozillaの報奨金制度で100万円ほど稼いだ話Mozillaの報奨金制度で100万円ほど稼いだ話
Mozillaの報奨金制度で100万円ほど稼いだ話Muneaki Nishimura
 
Jenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue OceanJenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue OceanAkihiko Horiuchi
 
メッセージキュー「Pulsar」の紹介 @OSC_20171007
メッセージキュー「Pulsar」の紹介 @OSC_20171007メッセージキュー「Pulsar」の紹介 @OSC_20171007
メッセージキュー「Pulsar」の紹介 @OSC_20171007Nozomi Kurihara
 
Introduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQIntroduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQDmitriy Samovskiy
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化dcubeio
 
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜Jumpei Miyata
 

Destacado (6)

Mozillaの報奨金制度で100万円ほど稼いだ話
Mozillaの報奨金制度で100万円ほど稼いだ話Mozillaの報奨金制度で100万円ほど稼いだ話
Mozillaの報奨金制度で100万円ほど稼いだ話
 
Jenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue OceanJenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue Ocean
 
メッセージキュー「Pulsar」の紹介 @OSC_20171007
メッセージキュー「Pulsar」の紹介 @OSC_20171007メッセージキュー「Pulsar」の紹介 @OSC_20171007
メッセージキュー「Pulsar」の紹介 @OSC_20171007
 
Introduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQIntroduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQ
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
 
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
 

Similar a MQTTとAMQPと.NET

Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Ryuichi Sakamoto
 
Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2Taiji Tsuchiya
 
Webrtc最新動向
Webrtc最新動向Webrtc最新動向
Webrtc最新動向Yusuke Naka
 
Hueによる分析業務の改善事例
Hueによる分析業務の改善事例Hueによる分析業務の改善事例
Hueによる分析業務の改善事例Masahiro Kiura
 
あなたとわたしの仲介人♡サービスブローカー
あなたとわたしの仲介人♡サービスブローカーあなたとわたしの仲介人♡サービスブローカー
あなたとわたしの仲介人♡サービスブローカーTsukasa Kato
 
今後のContainerの行く末の感じたこと、思ったこと 〜JKD参加報告〜
今後のContainerの行く末の感じたこと、思ったこと〜JKD参加報告〜今後のContainerの行く末の感じたこと、思ったこと〜JKD参加報告〜
今後のContainerの行く末の感じたこと、思ったこと 〜JKD参加報告〜Tsukasa Kato
 
IBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみたIBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみたYou&I
 
Introduction to NetOpsCoding
Introduction to NetOpsCodingIntroduction to NetOpsCoding
Introduction to NetOpsCodingTaiji Tsuchiya
 
俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014
俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014
俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014taiju higashi
 
MistCDNの概要 / Technical Session - WebRTC Meetup Tokyo #9
MistCDNの概要 / Technical Session - WebRTC Meetup Tokyo #9MistCDNの概要 / Technical Session - WebRTC Meetup Tokyo #9
MistCDNの概要 / Technical Session - WebRTC Meetup Tokyo #9Shintaro Tanaka
 
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…Drecom Co., Ltd.
 
流行りのSaaSで本当に365日幸せ?クラウド時代の賢いNotes活用術
流行りのSaaSで本当に365日幸せ?クラウド時代の賢いNotes活用術流行りのSaaSで本当に365日幸せ?クラウド時代の賢いNotes活用術
流行りのSaaSで本当に365日幸せ?クラウド時代の賢いNotes活用術Go Kawakami
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)NTT DATA Technology & Innovation
 
KubeFlow MeetUp #1 Katibよもやま話
KubeFlow MeetUp #1 Katibよもやま話KubeFlow MeetUp #1 Katibよもやま話
KubeFlow MeetUp #1 Katibよもやま話Yuji Oshima
 
Observability, Service Mesh and Microservices
Observability, Service Mesh and MicroservicesObservability, Service Mesh and Microservices
Observability, Service Mesh and MicroservicesTaiki
 
20161208 Classmethod Codenize Tools
20161208 Classmethod Codenize Tools20161208 Classmethod Codenize Tools
20161208 Classmethod Codenize ToolsKazuki Ueki
 
DXライブラリでMMO作ったよ!
DXライブラリでMMO作ったよ!DXライブラリでMMO作ったよ!
DXライブラリでMMO作ったよ!h2so5
 
マイクロサービスとは.pptx
マイクロサービスとは.pptxマイクロサービスとは.pptx
マイクロサービスとは.pptxssuserdd7ea9
 
repositoryパターンを維持しながら n+1問題を起こさないようにする方法論
repositoryパターンを維持しながら n+1問題を起こさないようにする方法論repositoryパターンを維持しながら n+1問題を起こさないようにする方法論
repositoryパターンを維持しながら n+1問題を起こさないようにする方法論智也 鈴木
 

Similar a MQTTとAMQPと.NET (20)

Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装
 
Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2
 
Webrtc最新動向
Webrtc最新動向Webrtc最新動向
Webrtc最新動向
 
Hueによる分析業務の改善事例
Hueによる分析業務の改善事例Hueによる分析業務の改善事例
Hueによる分析業務の改善事例
 
あなたとわたしの仲介人♡サービスブローカー
あなたとわたしの仲介人♡サービスブローカーあなたとわたしの仲介人♡サービスブローカー
あなたとわたしの仲介人♡サービスブローカー
 
今後のContainerの行く末の感じたこと、思ったこと 〜JKD参加報告〜
今後のContainerの行く末の感じたこと、思ったこと〜JKD参加報告〜今後のContainerの行く末の感じたこと、思ったこと〜JKD参加報告〜
今後のContainerの行く末の感じたこと、思ったこと 〜JKD参加報告〜
 
IBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみたIBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみた
 
Introduction to NetOpsCoding
Introduction to NetOpsCodingIntroduction to NetOpsCoding
Introduction to NetOpsCoding
 
俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014
俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014
俺のローカル開発環境 - MTDDC Meetup NAGOYA 2014
 
MistCDNの概要 / Technical Session - WebRTC Meetup Tokyo #9
MistCDNの概要 / Technical Session - WebRTC Meetup Tokyo #9MistCDNの概要 / Technical Session - WebRTC Meetup Tokyo #9
MistCDNの概要 / Technical Session - WebRTC Meetup Tokyo #9
 
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
CEDEC 2015 IoT向け汎用protocol MQTTのリアルタイムゲーム通信利用と実装、そして未来へ…
 
流行りのSaaSで本当に365日幸せ?クラウド時代の賢いNotes活用術
流行りのSaaSで本当に365日幸せ?クラウド時代の賢いNotes活用術流行りのSaaSで本当に365日幸せ?クラウド時代の賢いNotes活用術
流行りのSaaSで本当に365日幸せ?クラウド時代の賢いNotes活用術
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
 
KubeFlow MeetUp #1 Katibよもやま話
KubeFlow MeetUp #1 Katibよもやま話KubeFlow MeetUp #1 Katibよもやま話
KubeFlow MeetUp #1 Katibよもやま話
 
Observability, Service Mesh and Microservices
Observability, Service Mesh and MicroservicesObservability, Service Mesh and Microservices
Observability, Service Mesh and Microservices
 
20161208 Classmethod Codenize Tools
20161208 Classmethod Codenize Tools20161208 Classmethod Codenize Tools
20161208 Classmethod Codenize Tools
 
DXライブラリでMMO作ったよ!
DXライブラリでMMO作ったよ!DXライブラリでMMO作ったよ!
DXライブラリでMMO作ったよ!
 
マイクロサービスとは.pptx
マイクロサービスとは.pptxマイクロサービスとは.pptx
マイクロサービスとは.pptx
 
2 12椛澤「tokyo tyrant」
2 12椛澤「tokyo tyrant」2 12椛澤「tokyo tyrant」
2 12椛澤「tokyo tyrant」
 
repositoryパターンを維持しながら n+1問題を起こさないようにする方法論
repositoryパターンを維持しながら n+1問題を起こさないようにする方法論repositoryパターンを維持しながら n+1問題を起こさないようにする方法論
repositoryパターンを維持しながら n+1問題を起こさないようにする方法論
 

Más de terurou

Webブラウザ上で動作する帳票エンジンを作る話
Webブラウザ上で動作する帳票エンジンを作る話Webブラウザ上で動作する帳票エンジンを作る話
Webブラウザ上で動作する帳票エンジンを作る話terurou
 
自社サービスでDurable Functionsを採用した話
自社サービスでDurable Functionsを採用した話自社サービスでDurable Functionsを採用した話
自社サービスでDurable Functionsを採用した話terurou
 
Computation Expressions for Haxe
Computation Expressions for HaxeComputation Expressions for Haxe
Computation Expressions for Haxeterurou
 
デンキヤギの採用の考え方
デンキヤギの採用の考え方デンキヤギの採用の考え方
デンキヤギの採用の考え方terurou
 
Vue.jsをhaxeで
Vue.jsをhaxeでVue.jsをhaxeで
Vue.jsをhaxeでterurou
 
altJSの選び方
altJSの選び方altJSの選び方
altJSの選び方terurou
 
DataGridを自前実装する話
DataGridを自前実装する話DataGridを自前実装する話
DataGridを自前実装する話terurou
 
オブジェクト指向の皮をかぶった関数型プログラミング言語 Haxe
オブジェクト指向の皮をかぶった関数型プログラミング言語 Haxeオブジェクト指向の皮をかぶった関数型プログラミング言語 Haxe
オブジェクト指向の皮をかぶった関数型プログラミング言語 Haxeterurou
 
動的なILの生成と編集
動的なILの生成と編集動的なILの生成と編集
動的なILの生成と編集terurou
 
FIRST STEP to Haxe/JavaScript
FIRST STEP to Haxe/JavaScriptFIRST STEP to Haxe/JavaScript
FIRST STEP to Haxe/JavaScriptterurou
 
大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話terurou
 
大規模なJavaScript開発の話
大規模なJavaScript開発の話大規模なJavaScript開発の話
大規模なJavaScript開発の話terurou
 
Metro Style AppsでMSIL ver.2012/06/09
Metro Style AppsでMSILver.2012/06/09Metro Style AppsでMSILver.2012/06/09
Metro Style AppsでMSIL ver.2012/06/09terurou
 
Metro Style AppsでMSIL
Metro Style AppsでMSILMetro Style AppsでMSIL
Metro Style AppsでMSILterurou
 
Yet Another DLR for Silverlightの試作
Yet Another DLR for Silverlightの試作Yet Another DLR for Silverlightの試作
Yet Another DLR for Silverlightの試作terurou
 
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例terurou
 
CommonJSの話
CommonJSの話CommonJSの話
CommonJSの話terurou
 
Scala×silverlight
Scala×silverlightScala×silverlight
Scala×silverlightterurou
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングterurou
 
Iron Python / Iron Ruby で .NET Programming
Iron Python / Iron Ruby で .NET ProgrammingIron Python / Iron Ruby で .NET Programming
Iron Python / Iron Ruby で .NET Programmingterurou
 

Más de terurou (20)

Webブラウザ上で動作する帳票エンジンを作る話
Webブラウザ上で動作する帳票エンジンを作る話Webブラウザ上で動作する帳票エンジンを作る話
Webブラウザ上で動作する帳票エンジンを作る話
 
自社サービスでDurable Functionsを採用した話
自社サービスでDurable Functionsを採用した話自社サービスでDurable Functionsを採用した話
自社サービスでDurable Functionsを採用した話
 
Computation Expressions for Haxe
Computation Expressions for HaxeComputation Expressions for Haxe
Computation Expressions for Haxe
 
デンキヤギの採用の考え方
デンキヤギの採用の考え方デンキヤギの採用の考え方
デンキヤギの採用の考え方
 
Vue.jsをhaxeで
Vue.jsをhaxeでVue.jsをhaxeで
Vue.jsをhaxeで
 
altJSの選び方
altJSの選び方altJSの選び方
altJSの選び方
 
DataGridを自前実装する話
DataGridを自前実装する話DataGridを自前実装する話
DataGridを自前実装する話
 
オブジェクト指向の皮をかぶった関数型プログラミング言語 Haxe
オブジェクト指向の皮をかぶった関数型プログラミング言語 Haxeオブジェクト指向の皮をかぶった関数型プログラミング言語 Haxe
オブジェクト指向の皮をかぶった関数型プログラミング言語 Haxe
 
動的なILの生成と編集
動的なILの生成と編集動的なILの生成と編集
動的なILの生成と編集
 
FIRST STEP to Haxe/JavaScript
FIRST STEP to Haxe/JavaScriptFIRST STEP to Haxe/JavaScript
FIRST STEP to Haxe/JavaScript
 
大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話
 
大規模なJavaScript開発の話
大規模なJavaScript開発の話大規模なJavaScript開発の話
大規模なJavaScript開発の話
 
Metro Style AppsでMSIL ver.2012/06/09
Metro Style AppsでMSILver.2012/06/09Metro Style AppsでMSILver.2012/06/09
Metro Style AppsでMSIL ver.2012/06/09
 
Metro Style AppsでMSIL
Metro Style AppsでMSILMetro Style AppsでMSIL
Metro Style AppsでMSIL
 
Yet Another DLR for Silverlightの試作
Yet Another DLR for Silverlightの試作Yet Another DLR for Silverlightの試作
Yet Another DLR for Silverlightの試作
 
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
 
CommonJSの話
CommonJSの話CommonJSの話
CommonJSの話
 
Scala×silverlight
Scala×silverlightScala×silverlight
Scala×silverlight
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
 
Iron Python / Iron Ruby で .NET Programming
Iron Python / Iron Ruby で .NET ProgrammingIron Python / Iron Ruby で .NET Programming
Iron Python / Iron Ruby で .NET Programming
 

MQTTとAMQPと.NET