1707934236
2024-02-13 22:35:13
こんにちは! 😃 フリーランス開発者の生活の中では、バックグラウンドで多くのことが起こっているため、最後に話してからしばらく時間が経ちました。 そうですね、それが今日私たちがお話しする内容の一部です。はい、はい、背景にあるものです。
RabbitMQ を紹介します。このツールは、Symfony と非常に簡単に組み合わせることができ、パフォーマンスと効率性の素晴らしい組み合わせを実現します。 それを実装する必要がありました 小さな手作り道具 ソーシャルメディアへの投稿をスケジュールできるようになりました。 😁
メッセージとバスとは何ですか?
本題に入る前に、メッセージとは何かについて簡単に説明する必要があります。
“メッセージ ? テキストメッセージのようなものですか? しかし、2024 年にはメッセージが何であるかが誰もがわかります。」
そうですが、完全ではありません。 ここでは、 Symfony メッセンジャー コンポーネント。
このコンテキストでは、メッセージは、単純なテキスト文字列から、実行されるタスクを表す複雑なオブジェクトまで、あらゆるものになります。 その後、メッセージはバスによって転送され、バスが配信システムとして機能し、メッセージを正しい受信者にルーティングします。 ハンドラー またはマネージャー。
RabbitMQ は PHP スクリプトの最適化にどのように役立ちますか?
「それではメッセージを送信できますが、一体何が意味があるのでしょうか?」
いくつかのメッセージを含む定期的なタスクを完了する必要があると想像してください。 ソーシャル ネットワーク上での出版をスケジュールできるツールの例を見てみましょう。
つまり、さまざまなアカウントに対して、15 件の Instagram 投稿、30 件のツイートなどを午後 6 時に公開することができます。
問題 ? これには、特にパブリケーションにアップロードするファイルが含まれている場合、多かれ少なかれ面倒な API リクエストの数は言うまでもなく、多くのリソースが必要になる場合があります。
経験豊富な開発者であれば、PHP はシングルスレッド言語であり、コードの実行順にすべてを一度に処理することをご存知でしょう。
これらのタスクを非同期に委任できるため、RabbitMQ が非常に興味深いのはまさにこの場合です。 一方は他方から独立しているため、重いパブリケーションが処理されているときにパブリケーションがブロックされることはありません。 フォローしていますか?
「確かに面白そうですが、セットアップは複雑ですよね?」
まあ、全然違いますよ! 😊
実際、Symfony はメッセージ キュー (はい、これがこの原則の正確な名前です) を実行するために必要なものを RabbitMq とすでに統合しています。 前のリンクのドキュメントに従うことで、この 2 つを簡単に接続できるようになります。 いつものように、次のことを実行することをお勧めします。 コンテナ Docker が RabbitMQ を注ぐ よりシンプルに。 アクティベートする必要もあります PHP の拡張子 AMQP。
2 つを接続したら、Symfony で 2 つのクラスを作成する必要があります。 送信したいメッセージに対応するもの。 Symfony エンティティと同様に、そこに属性と関数を配置して、それらを他の場所から取得できるようにすることができます。
したがって、パブリケーション スクリプトを起動すると、このクラスのタイプのメッセージ オブジェクト (たとえば、Publication) が作成されます。
次に、これらのメッセージを管理し、その処理方法を知るためのハンドラー クラスが必要になります。 私たちにとって、ここでの目標は、API 呼び出しと、アプリケーションに必要なすべての重労働を行うことです。 実際、RabbitMQ に送信され委任されるのはこの部分です。
「わかりました。2 つのクラスがあり、なんとか機能させることができました。でも、どうすればよいでしょうか?」
すべてが正しく設定されていれば、スクリプトのコマンドを実行する以外に何もする必要はありません。その後、RabbitMQ が実際にスクリプトの処理を開始します。これを「メッセージの消費」と呼び、結果として次の Symfony コマンドが生成されます。 bin/console messenger:consume async
このために特別に設計された RabbitMQ プラグインがあります。 管理 これにより、メッセージ マネージャーで何が起こっているかを追跡するためのグラフィカル インターフェイスが提供されます。 ここではいくつかの例を示します :
ここでは、インスタンスが「準備完了」ステータスで待機していることがわかります。 彼女にはその命令が必要だ messenger:consume 実行されるように起動されます。
投稿は公開されました
実際、私たちの出版物はオンラインになりました。 😀
結論: 上手にコミュニケーションをとる技術
要約すると、RabbitMQ はメッセージ管理を頭痛の種ではなく、シンプルで直感的な楽しみに変える最良の方法であると言えます。 キューとエラーを管理すると、ある程度の制御を維持しながら、自信を持ってアクションを委任できます。
ただし、プロセスを監視したり、特定の時間にオーダーをカットしたりするために、サーバー上にツールが間違いなく必要になるため、本番環境のドキュメントに注意深く従うことを忘れないでください。
これで、アプリケーションを次のレベルに引き上げるために必要なものがすべて揃いました 😊
#RabbitMQ #と #Symfony #を使用して繰り返しアクションを作成する方法

