第3章 イベント駆動型の API
AMQ Clients で提供される API の多くは、非同期のイベント駆動型 API です。これには、C++、JavaScript、Python、Ruby API が含まれます。
これらの API は、ネットワークアクティビティーに合わせてアプリケーションイベント処理を実行することで機能します。ライブラリーは、ネットワーク I/O および実行イベントを監視します。イベントハンドラーはメインライブラリースレッド上で順次実行します。
イベントハンドラーはメインライブラリースレッドで実行されるため、長時間実行されるブロック操作をハンドラーコードに含めることはできません。イベントハンドラーでブロックすると、すべてのライブラリーの実行がブロックされます。長時間にわたるブロック操作を実行する必要がある場合は、別のスレッドで呼び出す必要があります。イベント駆動型の API には、ライブラリースレッドとアプリケーションスレッド間の調整をサポートする、クロススレッド通信機能が含まれています。
イベントハンドラーで長時間実行されるブロックを呼び出すと、すべてのライブラリーの実行が停止し、ライブラリーが他のイベントを処理しなくなってしまい、定期的なタスクの実行ができなくなります。長時間実行されるブロック手順は必ず、別のアプリケーションスレッドで開始します。