Microsoft Message Queuing ( MSMQ ) は、 Microsoftが開発し、 Windows NT 4およびWindows 95以降、同社のWindows Server オペレーティングシステムに導入されているメッセージ キューの実装です。Windows Server 2016およびWindows 10にもこのコンポーネントが含まれています。MSMQ は、主流のサーバー プラットフォームのサポートに加えて、1999 年のWindows CE 3.0のリリース以降、Microsoft Embedded プラットフォームにも組み込まれています。[ 1 ]
MSMQは、別々のサーバー/プロセス上で動作するアプリケーションがフェイルセーフな方法で通信できるようにするメッセージングプロトコルです。キューは、条件が許せばメッセージを送受信できる一時的な保存場所です。これにより、ネットワーク間や、常に接続されているとは限らないWindowsを実行しているコンピュータ間での通信が可能になります。これに対し、ソケットやその他のネットワークプロトコルは、直接接続が常に存在することを前提としています。
MSMQ は 1997 年以来、Microsoft プラットフォームの開発者に提供されており[ 2 ] 、ネイティブの.NET以前のバージョン (バージョン 5 および 6) とVisual Studio .NETの両方で、 Visual Studioを使用して構築されたエンタープライズ ソフトウェアで一般的に使用されています。Microsoft はまた、メッセージング テクノロジー フレームワークであるWindows Communication Foundation (WCF)に MSMQ を組み込んでいます。WCF では、MSMQ は、他の通信標準と互換性のある統一されたプログラミング モデルを使用して、安全で信頼性の高いトランスポートを提供するために使用できます。
MSMQは、企業内外のアプリケーション間でメッセージを確実に配信する役割を担います。MSMQは、宛先に到達できなかったメッセージをキューに格納し、宛先に到達可能になった時点で再送信することで、確実な配信を保証します。また、セキュリティと優先度に基づくメッセージングもサポートしています。タイムアウトやその他の理由で失敗したメッセージを監視するデッドレターキューを作成することもできます。
MSMQは、メッセージをディスクに書き込むかRAMのみに書き込むかによって、パフォーマンスと一貫性のトレードオフを行うために、永続メッセージングと非永続メッセージングの両方をサポートしています。非永続メッセージングは、非トランザクションキューを介してエクスプレスメッセージを送信することによってのみ実現できます。
MSMQはトランザクションもサポートしています。複数のキューに対して複数の操作を実行でき、すべての操作が単一のトランザクションにラップされるため、すべての操作が実行されるか、まったく実行されないかのどちらかになります。Microsoft Distributed Transaction Coordinator (MSDTC) は、トランザクションによる正確な1回限りの処理を実現するために、MSMQやその他のリソースへのトランザクションアクセスをサポートします。
Microsoft Message Queuing の操作には、以下のポートが使用されます。
MSMQは、Windowsプラットフォームベースの様々なコンタクトセンターアプリケーションで広く使用されており、これらのアプリケーションは内部通知やサービスにこのサービスを利用しています。