Workers プロパティ
実行中のNginx インスタンスを使用せずに、web インスタンスから独立して実行するワーカーを定義できます。ただし、ワーカーは、Commerce アプリケーションで使用されているのと同じネットワークストレージを使用します。 ルーターは公開リクエストをワーカーに転送できないため、(Node.jsまたはGoを使用して)ワーカーインスタンスにweb サーバーを設定する必要はありません。 これにより、ワーカーインスタンスは、バックグラウンドタスクや、デプロイメントをブロックするリスクがあるタスクを継続的に実行するのに最適になります。
ワーカーの設定
ワーカーは、Pro ステージング環境と実稼動環境でのみ使用できます。 プロ統合環境とスターター環境では、CRON_CONSUMERS_RUNNER変数を選択して使用できます。
Pro ステージングまたは実稼動環境でワーカーを設定するには、Adobe Commerce サポートチケットを送信し次の情報を含めます。
- プロジェクト ID
- 環境ID
- ワーカー名
- 開始コマンド
ワーカーごとに1つのプロセスを設定できます。 .magento.app.yaml ファイルの基本的な共通ワーカー設定は、次のようになります。
workers:
queue:
commands:
start: |
php ./bin/magento queue:consumers:start commerce.eventing.event.publish
この例では、リソース割り当ての小さい(サイズ S)レベルのqueueという名前の単一のワーカーを定義し、起動時にphp ./bin/magento コマンドを実行します。 ワーカーqueueは、ワーカープロセスとして各ノードで実行されます。 コマンドが終了すると、自動的に再起動されます。
コマンドとオーバーライド
ワーカーアプリケーションでコマンドを起動するには、commands.start キーが必要です。 任意の有効なシェルコマンドを使用できますが、アプリケーションの言語を使用することをお勧めします。 start キーで指定されたコマンドが終了すると、自動的に再起動します。
deployおよびpost_deploy フックとcrons コマンドは、ワーカーインスタンスではなく、web コンテナでのみ実行されます。継承
size、relationships、access、diskおよびmount、およびvariables プロパティの定義は、明示的に上書きされない限り、ワーカーによって継承されます。
次のプロパティは、 トップレベル設定を上書きするために最もよく使用されます。
size– 単一のバックグラウンド プロセスに割り当てるリソースの数を減らしますvariables- アプリケーションの実行方法を変更するように指示します
タイミングとキュー
各ワーカーは別のワーカーの後ろにキューに入れますが、次の設定では、PHP コード内の8秒のスリープに関係なく、var/time.txt ファイルのタイムスタンプで2秒の分離が一貫して生成されます。
workers:
time1:
commands:
start: 'php -r "sleep(8); echo time() . PHP_EOL;" >> var/time.txt& sleep 2'