3.4. JobSink
イベント処理は通常、数分などの短い時間枠内で完了します。これにより、HTTP 接続が開いたままになり、サービスが早期にスケールダウンすることがなくなります。
長時間接続を維持すると、障害のリスクが高まり、処理の再起動やリクエストの再試行が繰り返される可能性があります。
				JobSink を使用すると、batch/v1 Job リソースと機能全体、および Kueue などの Kubernetes ジョブキューシステムを使用して、長時間実行される非同期ジョブとタスクをサポートできます。
			
3.4.1. JobSink の使用 リンクのコピーリンクがクリップボードにコピーされました!
					イベントが JobSink に送信されると、Eventing は Job を作成し、受信したイベントを JSON ファイルとして /etc/jobsink-event/event にマウントします。
				
手順
JobSinkオブジェクト定義を YAML ファイルとして作成します。JobSink YAML
Copy to Clipboard Copied! Toggle word wrap Toggle overflow JobSinkYAML ファイルを適用します。oc apply -f <job-sink-file.yaml>
$ oc apply -f <job-sink-file.yaml>Copy to Clipboard Copied! Toggle word wrap Toggle overflow JobSinkの準備ができていることを確認します。oc get jobsinks.sinks.knative.dev
$ oc get jobsinks.sinks.knative.devCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
NAME URL AGE READY REASON job-sink-logger http://job-sink.knative-eventing.svc.cluster.local/default/job-sink-logger 5s True
NAME URL AGE READY REASON job-sink-logger http://job-sink.knative-eventing.svc.cluster.local/default/job-sink-logger 5s TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow JobSinkをトリガーします。JobSinkは、任意のイベントソースまたはトリガーによってトリガーできます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Jobが作成されたことを確認します。oc logs job-sink-loggerszoi6-dqbtq
$ oc logs job-sink-loggerszoi6-dqbtqCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
{"specversion":"1.0","id":"123","source":"my/curl/command","type":"my.demo.event","datacontenttype":"application/json","data":{"details":"JobSinkDemo"}}{"specversion":"1.0","id":"123","source":"my/curl/command","type":"my.demo.event","datacontenttype":"application/json","data":{"details":"JobSinkDemo"}}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
						JobSink は、受信した一意のイベントごとに Job を作成します。
					
						イベントは、source 属性と id 属性の組み合わせによって一意に識別されます。
					
						同じ属性を持つイベントを受信した際に、そのイベントの Job がすでに存在する場合は、別の Job は作成されません。
					
3.4.2. Job イベントファイルの読み取り リンクのコピーリンクがクリップボードにコピーされました!
手順
eventファイルを読み取り、任意の CloudEvents JSON デシリアライザーを使用してデシリアライズします。次の例は、CloudEvents Go SDK を使用してイベントを読み取って処理する方法を示しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
3.4.3. カスタムイベントファイルのマウントパスの設定 リンクのコピーリンクがクリップボードにコピーされました!
					JobSink 定義でカスタム event ファイルのマウントパスを設定できます。
				
手順
コンテナー定義内に
volumeMounts設定を含め、必要に応じて設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
3.4.4. 終了したジョブのクリーンアップ リンクのコピーリンクがクリップボードにコピーされました!
					JobSink 定義で ttlSecondsAfterFinished 値を設定することで、完了したジョブをクリーンアップできます。たとえば、値を 600 に設定すると、完了したジョブは完了後 600 秒 (10 分) で削除されます。
				
手順
定義では、
ttlSecondsAfterFinishedの値を必要な量に設定します。ttlSecondsAfterFinished を 600 に設定した場合の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
3.4.5. FailJob アクションのシミュレーション リンクのコピーリンクがクリップボードにコピーされました!
手順
JobSink 定義にバグをシミュレートするコマンドを含めることで、
FailJobアクションをトリガーします。JobSink の失敗例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow