web-dev-qa-db-ja.com

MQとは何ですか?なぜ使用したいのですか?

職場の私のチームでは、クロスアプリケーション通信にIBM MQテクノロジーを多く使用しています。最近、ハッカーニュースや RabbitMQ のような他のMQテクノロジーに関する他の場所で見ました。私はそれが何であるか(メッセージを入れたり受け取ったりするためによくチェックされる領域)の基本的な理解は持っていますが、何が正確に得意なのかを知りたいのですか?どこでいつ使用したいかを知るにはどうすればよいですか?なぜもっと初歩的な形式のプロセス間メッセージングに固執しないのですか?

35
daveslab

これまでの説明はすべて正確で、要点ですが、何か欠けている可能性があります。メッセージキューの主な利点の1つは、復元力です。

これを想像してみてください。他の2つまたは3つのシステムと通信する必要があります。最近の一般的なアプローチは、すぐに回答が必要な場合に適したWebサービスです。

ただし、Webサービスがダウンして使用できなくなる可能性があります。通常、このシナリオでは、メッセージをメッセージキュー(マシン/サーバーにもコンポーネントがある)に入れます。メッセージは配信されず、したがって処理されますが、他のサービスのサイドがオンラインに戻ります。

そのため、多くの場合、メッセージキューを使用して異種のシステムを接続する方が、メッセージをやり取りするためのより信頼性が高く堅牢な方法です。それはすべてに対してうまく機能しません(MSFTのcurrent株価を知りたい場合、そのリクエストをキューに入れることは最良のアイデアではないかもしれません)-しかし、多くの場合、サプライヤのメッセージキューに注文を入れると、非常にうまく機能し、他のテクノロジーの信頼性の問題を緩和するのに役立ちます。

61
marc_s

MQはメッセージングキューの略です。

複数のプロセス(おそらく異なるマシン上)がさまざまなモデル(ポイントツーポイント、パブリッシュ、サブスクライブなど)を介して通信できるようにする抽象化レイヤーです。実装に応じて、保証された信頼性、エラー報告、セキュリティ、検出、パフォーマンスなどのように構成できます。

これはすべて、ソケットを使用して手動で行うことができますが、非常に困難です。

例:通信するプロセスが必要であるが、そのうちの1つが途中で停止し、後で再接続される可能性があるとします。中間メッセージが失われないことをどのように確認しますか? MQソリューションはそれをあなたのためにできます。

14
Uri

メッセージキューシステムは、いくつかのボーナスを提供することになっています。最も重要なものの中には、監視とトランザクションの動作があります。

電源障害などの障害の影響を受けないようにするには、トランザクション設計が重要です。銀行システムにATMの出金を通知し、途中で一時的にどのサーバーに障害が発生した場合でも、リクエストごとに1回だけ通知する必要があることを想像してください。 MQシステムを使用すると、複数のデータベース、MQ、および他のシステム間でトランザクションを調整できます。

言うまでもなく、このようなシステムは、名前付きパイプ、TCPまたは他の非トランザクションツールと比較して非常に低速です。高いパフォーマンスが必要な場合、メッセージをディスク経由で書き込むことはできません。 、それはあなたのデザインを複雑にします-エキゾチックで信頼性の高い高速なコミュニケーションを達成するために、デザイナーを本当に重要なトリックに押し込みます。

通常、MQシステムでは、ユーザーはキューの内容を監視したり、プラグインを作成したり、キューをクリアしたりできます。

8

MQは単にMessage Queueの略です。

時間に依存しないプロセス間/プラットフォーム間/アプリケーション間メッセージを確実に送信する必要がある場合に使用します。

メッセージキューはメッセージを受信し、適切なキューに入れ、準備ができたらアプリケーションがメッセージを取得するのを待ちます。

3
Justin Niessner

参照:Webサービスがダウンして使用できなくなる可能性があります-次に何をしますか?その拡張として。ローカルネットワークとローカルPCもダウンした場合はどうなりますか?システムが他の場所にある展開された依存システムを回復するのを待っている間、そのデータを待っているのは代替データストリームを見る必要があります。さもなければ、それは今日の、そしてすぐに将来のモノのインターネット(IOT)要件に十分な「リアルタイム」応答ではないかもしれません。

さまざまなFIFOストリームの少なくとも並列の不揮発性ストレージ)が必要な場合(少なくともシグナルチェーンに沿ったある点で)FPGAおよびFRAMメモリを使用します。FRAMはクロック速度で動作し、FPGAデバイスはその場で再プログラムされ、多くの独立した並列データストリームが必要とされます(もちろん、確立された制約の範囲内で)追加および削除されます。

0
Ron Harding

メッセージキューは、従来の「エンタープライズ統合パターン」ブックおよび website で説明されている多くのパターンの基礎を形成します。

0
SteveD