私の職場のチームでは、アプリケーション間の通信にIBMMQテクノロジーを頻繁に使用しています。最近、Hacker Newsや、 RabbitMQのような他のMQテクノロジーに関する他の場所で見ました。私はそれが何であるか(メッセージを入れたり受け取ったりするために一般的にチェックされる領域)について基本的な理解を持っていますが、それが正確に何が得意なのか知りたいですか?どこでいつ使用したいかをどうやって知ることができますか?より基本的な形式のプロセス間メッセージングに固執しないのはなぜですか?
5 に答える
これまでのすべての説明は正確で要点がありますが、何かが欠けている可能性があります。メッセージキューの主な利点の1つである復元力です。
これを想像してみてください。他の2つまたは3つのシステムと通信する必要があります。最近の一般的なアプローチは、すぐに回答が必要な場合に適したWebサービスです。
ただし、Webサービスがダウンして利用できなくなる可能性があります。その場合はどうしますか?メッセージをメッセージキュー(マシン/サーバーにもコンポーネントがあります)に入れることは、通常、このシナリオで機能します-メッセージは配信されず、したがって現在処理されません-しかし、後で他のサービスの側面がオンラインに戻ります。
したがって、多くの場合、メッセージキューを使用して異種システムを接続する方が、メッセージを送受信するためのより信頼性が高く、より堅牢な方法です。すべての場合にうまく機能するわけではありません(MSFTの現在の株価を知りたい場合は、その要求をキューに入れるのは最善のアイデアではないかもしれません)-しかし、多くの場合、サプライヤーのメッセージに注文を入れるなどです。キュー、それは本当にうまく機能し、他の技術の信頼性の問題のいくつかを緩和するのに役立ちます。
MQはメッセージングキューの略です。
これは、複数のプロセス(異なるマシン上にある可能性が高い)がさまざまなモデル(ポイントツーポイント、パブリッシュサブスクライブなど)を介して通信できるようにする抽象化レイヤーです。実装に応じて、保証された信頼性、エラーレポート、セキュリティ、検出、パフォーマンスなどのために構成できます。
これはすべてソケットを使用して手動で行うことができますが、それは非常に困難です。
例:通信するプロセスが必要であるが、そのうちの1つが途中で停止し、後で再接続される可能性があるとします。暫定メッセージが失われないようにするにはどうすればよいですか?MQソリューションはあなたのためにそれを行うことができます。
メッセージキューイングシステムはあなたにいくつかのボーナスを与えることになっています。最も重要なものの中には、監視とトランザクションの動作があります。
停電などの障害の影響を受けないようにする場合は、トランザクション設計が重要です。銀行システムにATMのお金の引き出しを通知したいとします。途中で一時的に障害が発生したサーバーに関係なく、リクエストごとに1回だけ行う必要があります。MQシステムを使用すると、複数のデータベース、MQ、およびその他のシステム間でトランザクションを調整できます。
言うまでもなく、このようなシステムは、名前付きパイプ、TCP、またはその他の非トランザクションツールと比較して非常に低速です。高いパフォーマンスが必要な場合は、メッセージをディスクに書き込むことを許可しません。代わりに、それはあなたのデザインを複雑にします-エキゾチックで信頼性が高く高速なコミュニケーションを実現するために、デザイナーは本当に重要なトリックに追い込まれます。
MQシステムでは通常、ユーザーはキューの内容を監視したり、プラグインを作成したり、キューをクリアしたりできます。
MQは単にメッセージキューの略です。
時間に依存しないプロセス間/クロスプラットフォーム/クロスアプリケーションメッセージを確実に送信する必要がある場合に使用します。
メッセージキューはメッセージを受信し、適切なキューに配置し、準備ができたらアプリケーションがメッセージを取得するのを待ちます。
参考:Webサービスがダウンして利用できなくなる可能性があります-それではどうしますか?その拡張として; ローカルネットワークとローカルPCもダウンしている場合はどうなりますか?システムが依存しているデプロイ済みシステムを他の場所で回復するのを待っている間、そのデータを待っている間は代替データストリームを確認する必要があります。そうでなければ、それは今日の、そしてすぐに将来のモノのインターネット(IOT)の要件に対して十分な「リアルタイム」の応答ではないかもしれません。
さまざまなFIFOストリームの真の並列で不揮発性のストレージが必要な場合(少なくともシグナルチェーンのある時点で)、FPGAおよびFRAMメモリを使用します。FRAMはクロック速度で動作し、FPGAデバイスはオンザフライで再プログラムできますが、多くの独立した並列データストリームが必要です(もちろん確立された制約の範囲内で)。