私の現在のプロジェクトでは、Webサービス層を実装しており、RabbitMQを使用してこの層をデカップリングしたいと考えています。これは最後に私に非常に薄いwebservice層を与えます。これの課題は、すべてのWebサービス呼び出しが同期的であることです。 Webサービス層の呼び出し側は応答を取得する必要があります。RabbitMQと同期Webサービス層を分離するのは良いか悪いのでしょうか?
私はRabbitMQでデカップリングを行うのが良いか悪いのだろうかと思っていましたか?
私の現在のプロジェクトでは、Webサービス層を実装しており、RabbitMQを使用してこの層をデカップリングしたいと考えています。これは最後に私に非常に薄いwebservice層を与えます。これの課題は、すべてのWebサービス呼び出しが同期的であることです。 Webサービス層の呼び出し側は応答を取得する必要があります。RabbitMQと同期Webサービス層を分離するのは良いか悪いのでしょうか?
私はRabbitMQでデカップリングを行うのが良いか悪いのだろうかと思っていましたか?
更新/挿入がクエリとは別に処理されるCQRSパターンに基づいてWebサービスを構築する場合、Rabbitを非結合形式で使用して挿入/更新を処理して、Webサービス要求によってメッセージ挿入または更新される情報をキューに格納してから、それを返します。この方法では、dbがトランザクションをコミットするのを待っているわけではありません。 これらのメッセージを消費し、適切なデータベースの挿入/更新呼び出しを行うために、別個のサービスを用意する必要があります。
情報を返すためには、依然としてデータベースと直接対話する必要があります。
これが良いか悪いかは、完全に主観的です。データベースがかなりシンプルで、挿入/更新に時間がかからない場合は、純利益がほとんどまたはまったくない複雑さが導入されている可能性があります。たとえば、javascriptを使用してWebサービスへの非同期呼び出しを行うことで、投稿を処理してエンドユーザーに応答性の高いエクスペリエンスを提供することができます。