問題タブ [symfony-messenger]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - Envelope でイベント名と遅延時間を設定するには?
私は symfony 4 + エンキュー ( https://github.com/sroze/messenger-enqueue-transport + https://packagist.org/packages/enqueue/pheanstalk ) を使用して、Beanstalk で非同期ジョブを実行しています。
今私は持っています:
しかし、私はこの仕事が遅れて処理されることを望んでいます。
ドキュメンテーションにより、次のようにリファクタリングする必要があります。
ここでの問題は、イベントの名前を配置する場所がわからないことです ( article.publish
)
( https://github.com/sroze/messenger-enqueue-transport#setting-custom-configuration-on-your-messageに基づく)
php - バインディングキーを使用したsymfonyメッセンジャーキュー - 再試行戦略
私が働いている会社でメッセンジャーを実装しています。ルーティング キーに問題が見つかりました。
1 つのメッセージを 2 つのキューに送信したいと考えています。他の 2 つのアプリがこのキューを処理します。すべてうまくいきますが、ハンドラーが例外をスローするときに問題が見つかりました。再試行キューはバインディング キーによって一致するため、1 つまたは 2 つの再試行キューを送信するメッセージが 2 倍になります。これはこのキューでも同じです。
最後に 3 回の再試行で、dlq に 16 個のメッセージがあります。この問題を手伝ってくれませんか?ルーティング キーではなく、キューに基づいて再試行戦略を作成することは可能ですか?
私の設定は次のようになります:
私はそのようなスタンプでイベントをディスパッチします:
ハンドラ:
今、私はそのような設定を試みていました:
そして、2 つの実行中のコンソール コマンドを使用します。
しかし、それは同じように機能します。
redis - 処理が成功した後に redis ストリームを削除する方法
メッセンジャーのトランスポートとしてredisを使用しています。フローを処理した後、削除は自動的に行われると思いましたが、残念ながらそうではありませんでした。処理が成功したときに繰り返しストリームを削除する方法がわかりません。
私はsymfony 4.4.latestとredisサーバー6.0を使用しています
ありがとう
php - Symfony Messenger で「子」クラスからのメッセージを処理しないようにするには?
ドキュメントに何かが欠けていると思いますが、質問は非常に簡単です。
MessageOne
class のメッセージがあり、MessageTwo
which extends があるとしましょうMessageOne
。
私はまた、MessageOneHandler
どちらを処理する必要がありMessageOne
ます:
そして、MessageTwoHandler
どれだけを処理する必要がありMessageTwo
ます:
問題は、MessageTwo
が発送されたときに と の両方で処理されていることMessageHandlerOne
ですMessageHandlerTwo
。はい、継承のために完全に賢明であり、すべてが論理的に正しいですが、それを防ぐ「symfony」の方法はありますか?
もちろん、これらのクラスの継承を作り直すことでこの問題を解決できますが、もっと良い方法はありますか?
さらにdebug:messenger
、継承の問題なしに、1 つのメッセージ クラスごとに 1 つのハンドラーで、すべてが期待どおりに表示されます。