[{"data":1,"prerenderedAt":2298},["ShallowReactive",2],{"docs:\u002Fko\u002Fguide\u002Fexecution":3},{"page":4,"untranslated":2297,"translated":1511},{"id":5,"title":6,"body":7,"description":2288,"extension":2289,"meta":2290,"navigation":1511,"path":2291,"publishedAt":2292,"seo":2293,"stem":2294,"updatedAt":2295,"__hash__":2296},"docs_ko\u002Fko\u002Fguide\u002Fexecution.md","실행 제어",{"type":8,"value":9,"toc":2263},"minimark",[10,14,19,114,138,143,166,170,199,210,214,217,291,300,367,381,385,402,440,482,493,497,524,556,559,583,602,659,681,706,710,713,799,915,933,937,950,954,974,1023,1026,1033,1059,1092,1121,1125,1146,1149,1155,1190,1214,1230,1234,1237,1283,1292,1369,1387,1401,1405,1426,1461,1468,1716,1719,1827,1847,1851,1882,1952,1966,1969,2083,2107,2111,2123,2193,2240,2259],[11,12,6],"h1",{"id":13},"実行の制御",[15,16,18],"h2",{"id":17},"状態","상태",[20,21,22,34],"table",{},[23,24,25],"thead",{},[26,27,28,31],"tr",{},[29,30,18],"th",{},[29,32,33],{},"의미",[35,36,37,49,59,69,79,92,102],"tbody",{},[26,38,39,46],{},[40,41,42],"td",{},[43,44,45],"code",{},"SCHEDULED",[40,47,48],{},"최초 실행과 재시도 실행을 기다리는 상태",[26,50,51,56],{},[40,52,53],{},[43,54,55],{},"QUEUED",[40,57,58],{},"실행 대상이 되었으며 performer 시작 전인 상태",[26,60,61,66],{},[40,62,63],{},[43,64,65],{},"RUNNING",[40,67,68],{},"performer 실행 중인 상태",[26,70,71,76],{},[40,72,73],{},[43,74,75],{},"COMPLETED",[40,77,78],{},"성공. 종료 상태 중 하나이며 다른 상태로 전이하지 않음",[26,80,81,86],{},[40,82,83],{},[43,84,85],{},"FAILED",[40,87,88,89,91],{},"시도 횟수 상한까지 실패한 상태. 수동 재시도로 ",[43,90,45],{},"로 전이",[26,93,94,99],{},[40,95,96],{},[43,97,98],{},"CANCELLED",[40,100,101],{},"취소된 상태. 종료 상태 중 하나이며 다른 상태로 전이하지 않음",[26,103,104,109],{},[40,105,106],{},[43,107,108],{},"STALLED",[40,110,111,112,91],{},"결과가 보고되지 않은 채 정지한 상태. 수동 재시도에 한해 ",[43,113,45],{},[115,116,117,120,121,124,126,127,129,130,132,134,135,137],"p",{},[43,118,119],{},"attempts","는 종료된 시도의 횟수입니다.",[122,123],"br",{},[43,125,45],{}," 상태의 잡은 ",[43,128,119],{},"가 0이면 최초 실행을 기다리는 것이고, 1 이상이면 재시도를 기다리는 것입니다.",[122,131],{},[43,133,85],{},"와 ",[43,136,108],{}," 상태의 잡은 대시보드 또는 REST API에서 수동으로 재시도하세요.",[139,140,142],"h3",{"id":141},"遷移","전이",[115,144,145,147,148,150,151,153,134,155,157,158,163,164,150],{},[43,146,45],{}," 상태의 잡을 취소하면 즉시 ",[43,149,98],{},"로 전이합니다.",[122,152],{},[43,154,55],{},[43,156,65],{}," 상태의 잡은 기한이 지났거나 ",[159,160,162],"a",{"href":161},"#%E5%AE%9F%E8%A1%8C%E4%B8%AD%E3%81%AE%E5%8F%96%E3%82%8A%E6%B6%88%E3%81%97","실행 중 취소","가 확정되면 ",[43,165,98],{},[15,167,169],{"id":168},"リトライ","재시도",[115,171,172,173,176,177,180,181,183,185,186,188,190,191,194,195,198],{},"재시도 횟수의 상한은 ",[43,174,175],{},"maxAttempts","로, 간격은 ",[43,178,179],{},"backoff","로 설정합니다.",[122,182],{},[43,184,175],{},"에는 1 이상의 정수를 지정하세요.",[122,187],{},[43,189,179],{},"는 고정 간격인 ",[43,192,193],{},"fixed","와 지수 백오프인 ",[43,196,197],{},"exponential"," 중 하나의 형식으로 지정합니다.",[200,201,203],"callout",{"type":202},"info",[115,204,205,206,209],{},"wrangler.jsonc의 ",[43,207,208],{},"max_retries","는 Queues 설정입니다. Tsumugi의 재시도에는 영향을 주지 않습니다.",[139,211,213],{"id":212},"バックオフ","백오프",[115,215,216],{},"기본값은 다음과 같은 지수 백오프입니다.",[218,219,224],"pre",{"className":220,"code":221,"language":222,"meta":223,"style":223},"language-ts shiki shiki-themes github-light github-dark","{ kind: 'exponential', baseMs: 1_000, factor: 2, maxMs: 3_600_000, jitter: true }\n","ts","",[43,225,226],{"__ignoreMap":223},[227,228,231,235,239,242,246,249,252,254,258,260,263,265,268,270,273,275,278,280,283,285,288],"span",{"class":229,"line":230},"line",1,[227,232,234],{"class":233},"sVt8B","{ ",[227,236,238],{"class":237},"sScJk","kind",[227,240,241],{"class":233},": ",[227,243,245],{"class":244},"sZZnC","'exponential'",[227,247,248],{"class":233},", ",[227,250,251],{"class":237},"baseMs",[227,253,241],{"class":233},[227,255,257],{"class":256},"sj4cs","1_000",[227,259,248],{"class":233},[227,261,262],{"class":237},"factor",[227,264,241],{"class":233},[227,266,267],{"class":256},"2",[227,269,248],{"class":233},[227,271,272],{"class":237},"maxMs",[227,274,241],{"class":233},[227,276,277],{"class":256},"3_600_000",[227,279,248],{"class":233},[227,281,282],{"class":237},"jitter",[227,284,241],{"class":233},[227,286,287],{"class":256},"true",[227,289,290],{"class":233}," }\n",[115,292,293,294,296,297,299],{},"고정 간격으로 하려면 ",[43,295,238],{},"에 ",[43,298,193],{},"를 지정하세요.",[218,301,303],{"className":220,"code":302,"language":222,"meta":223,"style":223},"await tsumugi.enqueue(env, {\n  binding: 'MAIL',\n  payload,\n  backoff: { kind: 'fixed', delayMs: 30_000, jitter: true },\n});\n",[43,304,305,320,332,338,361],{"__ignoreMap":223},[227,306,307,311,314,317],{"class":229,"line":230},[227,308,310],{"class":309},"szBVR","await",[227,312,313],{"class":233}," tsumugi.",[227,315,316],{"class":237},"enqueue",[227,318,319],{"class":233},"(env, {\n",[227,321,323,326,329],{"class":229,"line":322},2,[227,324,325],{"class":233},"  binding: ",[227,327,328],{"class":244},"'MAIL'",[227,330,331],{"class":233},",\n",[227,333,335],{"class":229,"line":334},3,[227,336,337],{"class":233},"  payload,\n",[227,339,341,344,347,350,353,356,358],{"class":229,"line":340},4,[227,342,343],{"class":233},"  backoff: { kind: ",[227,345,346],{"class":244},"'fixed'",[227,348,349],{"class":233},", delayMs: ",[227,351,352],{"class":256},"30_000",[227,354,355],{"class":233},", jitter: ",[227,357,287],{"class":256},[227,359,360],{"class":233}," },\n",[227,362,364],{"class":229,"line":363},5,[227,365,366],{"class":233},"});\n",[115,368,369,372,373,375,376,380],{},[43,370,371],{},"jitter: true","를 지정하면 동시에 실패한 다수 잡의 재시도 시각이 분산됩니다.",[122,374],{},"\nperformer에서 재시도 여부와 다음 재시도 시각을 지정하는 방법은 ",[159,377,379],{"href":378},"\u002Fko\u002Fguide\u002Fperformer#%E5%86%8D%E8%A9%A6%E8%A1%8C%E3%81%AE%E6%8C%87%E5%AE%9A","재시도 지정","을 참조하세요.",[15,382,384],{"id":383},"実行保証","실행 보장",[115,386,387,390,391,394,395,398,399,401],{},[43,388,389],{},"guarantee","는 ",[43,392,393],{},"at-least-once","(기본값)와 ",[43,396,397],{},"at-most-once"," 중 하나입니다.",[122,400],{},"\n결과가 보고되지 않은 잡의 동작은 선택한 값에 따라 달라집니다.",[20,403,404,414],{},[23,405,406],{},[26,407,408,411],{},[29,409,410],{},"보장",[29,412,413],{},"결과가 보고되지 않은 경우의 동작",[35,415,416,428],{},[26,417,418,423],{},[40,419,420,422],{},[43,421,393],{},"(기본값)",[40,424,425,427],{},[43,426,45],{},"로 재투입",[26,429,430,434],{},[40,431,432],{},[43,433,397],{},[40,435,436,437,439],{},"재투입 없이 ",[43,438,108],{},"로 전이. 재실행은 수동 재시도로만 가능",[218,441,443],{"className":220,"code":442,"language":222,"meta":223,"style":223},"await tsumugi.enqueue(env, {\n  binding: 'CHARGE',\n  payload,\n  guarantee: 'at-most-once',\n});\n",[43,444,445,455,464,468,478],{"__ignoreMap":223},[227,446,447,449,451,453],{"class":229,"line":230},[227,448,310],{"class":309},[227,450,313],{"class":233},[227,452,316],{"class":237},[227,454,319],{"class":233},[227,456,457,459,462],{"class":229,"line":322},[227,458,325],{"class":233},[227,460,461],{"class":244},"'CHARGE'",[227,463,331],{"class":233},[227,465,466],{"class":229,"line":334},[227,467,337],{"class":233},[227,469,470,473,476],{"class":229,"line":340},[227,471,472],{"class":233},"  guarantee: ",[227,474,475],{"class":244},"'at-most-once'",[227,477,331],{"class":233},[227,479,480],{"class":229,"line":363},[227,481,366],{"class":233},[115,483,484,486,487,489,490,492],{},[43,485,397],{}," 잡은 중복 실행되지 않습니다.",[122,488],{},"\n대신 실행을 시작하기까지의 시간이 ",[43,491,393],{},"보다 길어집니다.",[15,494,496],{"id":495},"タイムアウトと無応答","타임아웃과 무응답",[115,498,499,502,503,505,506,509,510,513,514,516,517,519,520,380],{},[43,500,501],{},"timeoutMs","를 넘긴 시도는 실패로 처리됩니다.",[122,504],{},"\n시도의 에러에는 ",[43,507,508],{},"TsumugiTimeoutError","(",[43,511,512],{},"job timed out (\u003CjobId>, \u003CtimeoutMs>ms)",")가 기록됩니다.",[122,515],{},"\n타임아웃 후에도 performer의 실행은 중단되지 않습니다.",[122,518],{},"\n처리를 중단하는 방법은 ",[159,521,523],{"href":522},"\u002Fko\u002Fguide\u002Fperformer#%E3%82%BF%E3%82%A4%E3%83%A0%E3%82%A2%E3%82%A6%E3%83%88%E3%81%AB%E3%82%88%E3%82%8B%E4%B8%AD%E6%96%AD","타임아웃에 의한 중단",[115,525,526,528,529,531,532,535,536,134,538,541,542,544,546,547,150,549,551,553,554,150],{},[43,527,55],{}," 또는 ",[43,530,65],{}," 상태의 잡은 실행 시작(또는 마지막 ",[43,533,534],{},"heartbeat",")으로부터 ",[43,537,501],{},[43,539,540],{},"reaperGraceMs","(기본값 30초)가 지나도 시도 결과가 기록되지 않으면 무응답으로 판정됩니다.",[122,543],{},[43,545,397],{}," 잡은 시도 횟수와 관계없이 ",[43,548,108],{},[122,550],{},[43,552,393],{}," 잡은 시도 횟수가 상한에 도달하지 않았다면 재투입되고, 도달했다면 ",[43,555,85],{},[15,557,162],{"id":558},"実行中の取り消し",[115,560,561,134,563,565,566,568,569,575,576,578,579,582],{},[43,562,55],{},[43,564,65],{}," 상태의 잡을 취소하면 performer에 대한 취소 요청이 기록됩니다.",[122,567],{},"\n취소는 대시보드 또는 ",[159,570,572],{"href":571},"\u002Fko\u002Freference\u002Frest-api#post-apijobsidcancel",[43,573,574],{},"POST \u002Fapi\u002Fjobs\u002F:id\u002Fcancel","로 실행합니다.",[122,577],{},"\n이 엔드포인트의 응답에는 ",[43,580,581],{},"requested: true","가 포함됩니다.",[115,584,585,586,589,590,593,594,596,597,599,600,150],{},"performer는 ",[43,587,588],{},"ctx.heartbeat()","의 반환값 ",[43,591,592],{},"cancelRequested","로 요청을 확인합니다.",[122,595],{},"\n처리를 중단하려면 예외를 throw하여 종료하세요.",[122,598],{},"\n요청 후에 실패한 시도는 재시도되지 않으며, 잡은 ",[43,601,98],{},[218,603,605],{"className":220,"code":604,"language":222,"meta":223,"style":223},"const { cancelRequested } = await ctx.heartbeat(progress);\nif (cancelRequested) throw new Error('cancelled');\n",[43,606,607,634],{"__ignoreMap":223},[227,608,609,612,615,617,620,623,626,629,631],{"class":229,"line":230},[227,610,611],{"class":309},"const",[227,613,614],{"class":233}," { ",[227,616,592],{"class":256},[227,618,619],{"class":233}," } ",[227,621,622],{"class":309},"=",[227,624,625],{"class":309}," await",[227,627,628],{"class":233}," ctx.",[227,630,534],{"class":237},[227,632,633],{"class":233},"(progress);\n",[227,635,636,639,642,645,648,651,653,656],{"class":229,"line":322},[227,637,638],{"class":309},"if",[227,640,641],{"class":233}," (cancelRequested) ",[227,643,644],{"class":309},"throw",[227,646,647],{"class":309}," new",[227,649,650],{"class":237}," Error",[227,652,509],{"class":233},[227,654,655],{"class":244},"'cancelled'",[227,657,658],{"class":233},");\n",[115,660,661,662,664,665,667,668,670,671,150,673,675,676,678,680],{},"요청보다 먼저 성공이 보고된 경우 잡은 ",[43,663,75],{}," 상태로 유지되며 결과도 저장됩니다.",[122,666],{},"\n요청으로부터 ",[43,669,540],{},"(기본값 30초)가 지나도 결과가 보고되지 않으면 잡이 ",[43,672,98],{},[122,674],{},"\nperformer의 실행은 중단되지 않으므로, 요청을 확인하지 않는 performer는 실행을 계속합니다.",[122,677],{},[43,679,98],{},"로 전이한 이후의 보고는 폐기됩니다.",[115,682,683,684,150,686,688,689,691,692,150,694,696,697,700,701,703,705],{},"재시도를 기다리는 잡은 재투입되지 않고 ",[43,685,98],{},[122,687],{},"\n실행 전의 ",[43,690,397],{}," 잡도 실행되지 않고 ",[43,693,98],{},[122,695],{},"\n취소를 요청한 잡에 ",[43,698,699],{},"reschedule","을 요청하면 REST API는 409로 응답합니다.",[122,702],{},[43,704,534],{},"를 호출하지 않는 performer는 요청을 확인하지 않습니다.",[15,707,709],{"id":708},"実行量の制限","실행량 제한",[115,711,712],{},"binding별로 4개의 설정으로 실행량을 제한합니다.",[20,714,715,728],{},[23,716,717],{},[26,718,719,722,725],{},[29,720,721],{},"설정",[29,723,724],{},"기본값",[29,726,727],{},"내용",[35,729,730,745,763,781],{},[26,731,732,737,742],{},[40,733,734],{},[43,735,736],{},"concurrency",[40,738,739],{},[43,740,741],{},"100",[40,743,744],{},"동시에 실행하는 잡 수의 상한",[26,746,747,752,757],{},[40,748,749],{},[43,750,751],{},"rate",[40,753,754],{},[43,755,756],{},"null",[40,758,759,760,762],{},"일정 시간당 실행하는 잡 수의 상한. ",[43,761,756],{},"은 제한 없음",[26,764,765,770,775],{},[40,766,767],{},[43,768,769],{},"perKeyConcurrency",[40,771,772],{},[43,773,774],{},"1",[40,776,777,780],{},[43,778,779],{},"concurrencyKey","별 동시 실행 수의 상한",[26,782,783,788,792],{},[40,784,785],{},[43,786,787],{},"perKeyRate",[40,789,790],{},[43,791,756],{},[40,793,794,796,797,762],{},[43,795,779],{},"별 일정 시간당 실행 수의 상한. ",[43,798,756],{},[218,800,802],{"className":220,"code":801,"language":222,"meta":223,"style":223},"const tsumugi = defineTsumugi({\n  performers,\n  bindings: {\n    MAIL: {\n      policy: {\n        concurrency: 20,\n        rate: { tokens: 100, intervalMs: 60_000 },\n        perKeyConcurrency: 1,\n        perKeyRate: { tokens: 10, intervalMs: 60_000 },\n      },\n    },\n  },\n});\n",[43,803,804,820,825,830,835,840,851,867,877,892,898,904,910],{"__ignoreMap":223},[227,805,806,808,811,814,817],{"class":229,"line":230},[227,807,611],{"class":309},[227,809,810],{"class":256}," tsumugi",[227,812,813],{"class":309}," =",[227,815,816],{"class":237}," defineTsumugi",[227,818,819],{"class":233},"({\n",[227,821,822],{"class":229,"line":322},[227,823,824],{"class":233},"  performers,\n",[227,826,827],{"class":229,"line":334},[227,828,829],{"class":233},"  bindings: {\n",[227,831,832],{"class":229,"line":340},[227,833,834],{"class":233},"    MAIL: {\n",[227,836,837],{"class":229,"line":363},[227,838,839],{"class":233},"      policy: {\n",[227,841,843,846,849],{"class":229,"line":842},6,[227,844,845],{"class":233},"        concurrency: ",[227,847,848],{"class":256},"20",[227,850,331],{"class":233},[227,852,854,857,859,862,865],{"class":229,"line":853},7,[227,855,856],{"class":233},"        rate: { tokens: ",[227,858,741],{"class":256},[227,860,861],{"class":233},", intervalMs: ",[227,863,864],{"class":256},"60_000",[227,866,360],{"class":233},[227,868,870,873,875],{"class":229,"line":869},8,[227,871,872],{"class":233},"        perKeyConcurrency: ",[227,874,774],{"class":256},[227,876,331],{"class":233},[227,878,880,883,886,888,890],{"class":229,"line":879},9,[227,881,882],{"class":233},"        perKeyRate: { tokens: ",[227,884,885],{"class":256},"10",[227,887,861],{"class":233},[227,889,864],{"class":256},[227,891,360],{"class":233},[227,893,895],{"class":229,"line":894},10,[227,896,897],{"class":233},"      },\n",[227,899,901],{"class":229,"line":900},11,[227,902,903],{"class":233},"    },\n",[227,905,907],{"class":229,"line":906},12,[227,908,909],{"class":233},"  },\n",[227,911,913],{"class":229,"line":912},13,[227,914,366],{"class":233},[115,916,917,919,920,922,923,925,927,928,134,930,932],{},[43,918,787],{},"는 모든 키에 같은 값으로 적용됩니다.",[122,921],{},"\n키마다 다른 값을 설정하는 항목은 제공되지 않습니다.",[122,924],{},[43,926,779],{},"가 null인 잡에는 ",[43,929,769],{},[43,931,787],{},"가 적용되지 않습니다.",[139,934,936],{"id":935},"実行されない原因の確認","실행되지 않는 원인 확인",[115,938,939,940,946,947,949],{},"투입한 잡이 실행되지 않는 경우 ",[159,941,943],{"href":942},"\u002Fko\u002Freference\u002Frest-api#get-apidiagnostics",[43,944,945],{},"GET \u002Fapi\u002Fdiagnostics","의 응답에서 실행을 제한하고 있는 설정을 확인하세요.",[122,948],{},"\n응답은 일시 정지, 동시 실행 수, 레이트 중 무엇이 원인인지 알려 줍니다.",[139,951,953],{"id":952},"実行時の変更","실행 중 변경",[115,955,956,957,960,961,963,964,966,967,973],{},"대시보드의 ",[43,958,959],{},"bindings"," 탭에서는 동시 실행 수 변경과 투입 일시 정지를 조작합니다.",[122,962],{},"\n변경에는 배포가 필요하지 않으며 binding의 모든 shard에 적용됩니다.",[122,965],{},"\n이 조작은 ",[159,968,970],{"href":969},"\u002Fko\u002Freference\u002Frest-api#post-apibindingsbindingpolicy",[43,971,972],{},"POST \u002Fapi\u002Fbindings\u002F:binding\u002Fpolicy","를 호출하는 것과 같습니다.",[218,975,979],{"className":976,"code":977,"language":978,"meta":223,"style":223},"language-bash shiki shiki-themes github-light github-dark","curl -X POST -H \"authorization: Bearer $TOKEN\" -H 'content-type: application\u002Fjson' \\\n  -d '{\"paused\": true}' https:\u002F\u002Fexample.com\u002Fapi\u002Fbindings\u002FMAIL\u002Fpolicy\n","bash",[43,980,981,1012],{"__ignoreMap":223},[227,982,983,986,989,992,995,998,1001,1004,1006,1009],{"class":229,"line":230},[227,984,985],{"class":237},"curl",[227,987,988],{"class":256}," -X",[227,990,991],{"class":244}," POST",[227,993,994],{"class":256}," -H",[227,996,997],{"class":244}," \"authorization: Bearer ",[227,999,1000],{"class":233},"$TOKEN",[227,1002,1003],{"class":244},"\"",[227,1005,994],{"class":256},[227,1007,1008],{"class":244}," 'content-type: application\u002Fjson'",[227,1010,1011],{"class":256}," \\\n",[227,1013,1014,1017,1020],{"class":229,"line":322},[227,1015,1016],{"class":256},"  -d",[227,1018,1019],{"class":244}," '{\"paused\": true}'",[227,1021,1022],{"class":244}," https:\u002F\u002Fexample.com\u002Fapi\u002Fbindings\u002FMAIL\u002Fpolicy\n",[115,1024,1025],{},"재개 후에는 일시 정지 전부터 대기하던 우선순위가 낮은 잡이, 나중에 투입된 우선순위가 높은 잡보다 먼저 실행될 수 있습니다.",[115,1027,1028],{},[1029,1030],"img",{"alt":1031,"src":1032},"bindings 탭","\u002Fdashboard-bindings.jpg",[115,1034,1035,1036,1039,1040,1043,1044,1046,390,1048,1051,1052,134,1055,1058],{},"코드에서 변경하려면 ",[43,1037,1038],{},"tsumugi.shardFor","로 가져온 stub의 ",[43,1041,1042],{},"configure","를 호출하세요.",[122,1045],{},[43,1047,1042],{},[43,1049,1050],{},"policy","로 실행량 설정을, ",[43,1053,1054],{},"sweepAfterMs",[43,1056,1057],{},"failedRetentionMs","로 보존 기간을 변경합니다.",[218,1060,1062],{"className":220,"code":1061,"language":222,"meta":223,"style":223},"await tsumugi.shardFor(env, 'MAIL').configure({ policy: { concurrency: 5 } });\n",[43,1063,1064],{"__ignoreMap":223},[227,1065,1066,1068,1070,1073,1076,1078,1081,1083,1086,1089],{"class":229,"line":230},[227,1067,310],{"class":309},[227,1069,313],{"class":233},[227,1071,1072],{"class":237},"shardFor",[227,1074,1075],{"class":233},"(env, ",[227,1077,328],{"class":244},[227,1079,1080],{"class":233},").",[227,1082,1042],{"class":237},[227,1084,1085],{"class":233},"({ policy: { concurrency: ",[227,1087,1088],{"class":256},"5",[227,1090,1091],{"class":233}," } });\n",[115,1093,1094,1095,1097,1098,1100,1101,1103,1104,1106,1108,1109,1043,1115,1117,1118,1120],{},"실행 중에 변경한 설정은 ",[43,1096,959],{},"의 설정보다 우선합니다.",[122,1099],{},"\n그 이후에는 ",[43,1102,959],{},"의 설정이 적용되지 않습니다.",[122,1105],{},[43,1107,959],{},"의 설정으로 되돌리려면 ",[159,1110,1112],{"href":1111},"\u002Fko\u002Freference\u002Frest-api#post-apibindingsbindingpolicyreset",[43,1113,1114],{},"POST \u002Fapi\u002Fbindings\u002F:binding\u002Fpolicy\u002Freset",[122,1116],{},"\n또는 ",[43,1119,1042],{},"로 원래 내용을 다시 지정합니다.",[15,1122,1124],{"id":1123},"エージング","에이징",[115,1126,1127,1128,1130,1131,1133,1134,1136,1137,1140,1141,1143,1145],{},"우선순위가 높은 잡이 계속 투입되면 우선순위가 낮은 잡이 언제까지나 실행되지 않습니다.",[122,1129],{},"\n이를 방지하기 위해 대기 시간에 따라 실효 우선순위가 올라갑니다.",[122,1132],{},"\n이 동작을 에이징이라고 하며 기본으로 적용됩니다.",[122,1135],{},"\n우선순위가 올라가는 간격은 ",[43,1138,1139],{},"agingIntervalMs","이며 기본값은 60초입니다.",[122,1142],{},[43,1144,756],{},"을 지정하면 에이징이 적용되지 않고 우선순위 순서대로 잡이 실행됩니다.",[15,1147,1148],{"id":1148},"shard",[115,1150,1151,1152,1154],{},"shard는 binding의 잡을 분할하여 관리하는 단위입니다.",[122,1153],{},"\n기본 shard 수는 1입니다.",[218,1156,1158],{"className":220,"code":1157,"language":222,"meta":223,"style":223},"bindings: {\n  MAIL: { shards: 4 },\n}\n",[43,1159,1160,1167,1185],{"__ignoreMap":223},[227,1161,1162,1164],{"class":229,"line":230},[227,1163,959],{"class":237},[227,1165,1166],{"class":233},": {\n",[227,1168,1169,1172,1175,1178,1180,1183],{"class":229,"line":322},[227,1170,1171],{"class":237},"  MAIL",[227,1173,1174],{"class":233},": { ",[227,1176,1177],{"class":237},"shards",[227,1179,241],{"class":233},[227,1181,1182],{"class":256},"4",[227,1184,360],{"class":233},[227,1186,1187],{"class":229,"line":334},[227,1188,1189],{"class":233},"}\n",[115,1191,1192,1193,1196,1197,1199,134,1201,1204,1205,1207,1208,1210,1211,1213],{},"shard 수를 2 이상으로 하면 ",[43,1194,1195],{},"partitionKey","가 필수가 되며, 생략하면 예외가 발생합니다.",[122,1198],{},[43,1200,779],{},[43,1202,1203],{},"uniqueKey","로 제어하는 범위는 shard 수에 따라 달라집니다.",[122,1206],{},"\nshard 수가 1이면 binding 내의 모든 잡이 대상입니다.",[122,1209],{},"\n2 이상이면 ",[43,1212,1195],{},"로 선택되는 같은 shard의 잡으로 한정됩니다.",[115,1215,1216,528,1218,1220,1221,1223,1224,1226,1227,1229],{},[43,1217,779],{},[43,1219,1203],{},"를 사용하는 경우 ",[43,1222,1195],{},"에도 같은 키를 지정하세요.",[122,1225],{},"\n다른 값을 설정해도 에러는 발생하지 않지만, 같은 키를 가진 잡이 서로 다른 shard에 할당될 수 있습니다.",[122,1228],{},"\n그 결과 동시 실행이나 중복 생성이 발생할 수 있습니다.",[15,1231,1233],{"id":1232},"保持期間","보존 기간",[115,1235,1236],{},"종료된 잡은 일정 기간이 지나면 삭제됩니다.",[20,1238,1239,1250],{},[23,1240,1241],{},[26,1242,1243,1246,1248],{},[29,1244,1245],{},"대상",[29,1247,721],{},[29,1249,724],{},[35,1251,1252,1268],{},[26,1253,1254,1261,1265],{},[40,1255,1256,1258,1259],{},[43,1257,75],{}," \u002F ",[43,1260,98],{},[40,1262,1263],{},[43,1264,1054],{},[40,1266,1267],{},"5분",[26,1269,1270,1276,1280],{},[40,1271,1272,1258,1274],{},[43,1273,85],{},[43,1275,108],{},[40,1277,1278],{},[43,1279,1057],{},[40,1281,1282],{},"7일",[115,1284,1285,1286,1288,1289,1291],{},"삭제된 잡은 재시도할 수 없습니다.",[122,1287],{},"\n두 설정 모두 ",[43,1290,959],{},"에서 binding별로 지정합니다.",[218,1293,1295],{"className":220,"code":1294,"language":222,"meta":223,"style":223},"const tsumugi = defineTsumugi({\n  performers,\n  bindings: {\n    MAIL: { sweepAfterMs: 60 * 60 * 1000, failedRetentionMs: 14 * 24 * 60 * 60 * 1000 },\n  },\n});\n",[43,1296,1297,1309,1313,1317,1361,1365],{"__ignoreMap":223},[227,1298,1299,1301,1303,1305,1307],{"class":229,"line":230},[227,1300,611],{"class":309},[227,1302,810],{"class":256},[227,1304,813],{"class":309},[227,1306,816],{"class":237},[227,1308,819],{"class":233},[227,1310,1311],{"class":229,"line":322},[227,1312,824],{"class":233},[227,1314,1315],{"class":229,"line":334},[227,1316,829],{"class":233},[227,1318,1319,1322,1325,1328,1331,1333,1336,1339,1342,1344,1347,1349,1351,1353,1355,1357,1359],{"class":229,"line":340},[227,1320,1321],{"class":233},"    MAIL: { sweepAfterMs: ",[227,1323,1324],{"class":256},"60",[227,1326,1327],{"class":309}," *",[227,1329,1330],{"class":256}," 60",[227,1332,1327],{"class":309},[227,1334,1335],{"class":256}," 1000",[227,1337,1338],{"class":233},", failedRetentionMs: ",[227,1340,1341],{"class":256},"14",[227,1343,1327],{"class":309},[227,1345,1346],{"class":256}," 24",[227,1348,1327],{"class":309},[227,1350,1330],{"class":256},[227,1352,1327],{"class":309},[227,1354,1330],{"class":256},[227,1356,1327],{"class":309},[227,1358,1335],{"class":256},[227,1360,360],{"class":233},[227,1362,1363],{"class":229,"line":363},[227,1364,909],{"class":233},[227,1366,1367],{"class":229,"line":842},[227,1368,366],{"class":233},[115,1370,1371,1372,1375,1376,1378,1379,1381,1382,1386],{},"대시보드와 REST API의 목록에 표시하는 기간은 보존 기간과 별도로 ",[43,1373,1374],{},"retention","에서 설정합니다.",[122,1377],{},"\ncron 트리거를 설정하면 기간이 지난 종료된 잡과 Run이 목록에서 삭제됩니다.",[122,1380],{},"\n자세한 내용은 ",[159,1383,1385],{"href":1384},"\u002Fko\u002Freference\u002Fconfig#sweepoptions","SweepOptions","를 참조하세요.",[115,1388,1389,1390,1392,1393,134,1395,1397,1398,1400],{},"기본적으로 두 기간은 일치합니다.",[122,1391],{},"\n따라서 목록에 표시된 ",[43,1394,85],{},[43,1396,108],{}," 잡은 재시도 대상입니다.",[122,1399],{},"\n한쪽 기간만 변경한 경우에는 목록에 표시된 잡이라도 재시도 요청에 대해 REST API가 410으로 응답할 수 있습니다.",[15,1402,1404],{"id":1403},"失敗の通知","실패 알림",[115,1406,1407,1410,1411,134,1413,1415,1416,1418,1420,1421,1423,1425],{},[43,1408,1409],{},"onFailure","에 알림을 받을 binding 이름을 지정하면 ",[43,1412,85],{},[43,1414,108],{}," 상태의 잡이 지정한 performer에 알림으로 전달됩니다.",[122,1417],{},[43,1419,85],{},"는 시도 횟수의 상한까지 실패한 잡입니다.",[122,1422],{},[43,1424,108],{},"는 결과가 보고되지 않은 채 정지한 잡입니다.",[218,1427,1429],{"className":220,"code":1428,"language":222,"meta":223,"style":223},"const tsumugi = defineTsumugi({\n  performers,\n  onFailure: 'NotifyFailure',\n});\n",[43,1430,1431,1443,1447,1457],{"__ignoreMap":223},[227,1432,1433,1435,1437,1439,1441],{"class":229,"line":230},[227,1434,611],{"class":309},[227,1436,810],{"class":256},[227,1438,813],{"class":309},[227,1440,816],{"class":237},[227,1442,819],{"class":233},[227,1444,1445],{"class":229,"line":322},[227,1446,824],{"class":233},[227,1448,1449,1452,1455],{"class":229,"line":334},[227,1450,1451],{"class":233},"  onFailure: ",[227,1453,1454],{"class":244},"'NotifyFailure'",[227,1456,331],{"class":233},[227,1458,1459],{"class":229,"line":340},[227,1460,366],{"class":233},[115,1462,1463,1464,1467],{},"알림을 받는 performer는 ",[43,1465,1466],{},"FailureNotice","를 인수로 받습니다.",[218,1469,1471],{"className":220,"code":1470,"language":222,"meta":223,"style":223},"import { Performer } from 'tsumugi\u002Fperformer';\nimport type { FailureNotice } from 'tsumugi';\n\nexport class NotifyFailure extends Performer\u003CFailureNotice, void, {}, Env> {\n  async perform(notice: FailureNotice): Promise\u003Cvoid> {\n    const res = await fetch(this.env.SLACK_WEBHOOK, {\n      method: 'POST',\n      body: JSON.stringify({ text: `${notice.binding} が失敗しました: ${notice.error}` }),\n    });\n    if (!res.ok) throw new Error(`notification failed: ${res.status}`);\n  }\n}\n",[43,1472,1473,1490,1507,1513,1549,1583,1612,1622,1665,1670,1707,1712],{"__ignoreMap":223},[227,1474,1475,1478,1481,1484,1487],{"class":229,"line":230},[227,1476,1477],{"class":309},"import",[227,1479,1480],{"class":233}," { Performer } ",[227,1482,1483],{"class":309},"from",[227,1485,1486],{"class":244}," 'tsumugi\u002Fperformer'",[227,1488,1489],{"class":233},";\n",[227,1491,1492,1494,1497,1500,1502,1505],{"class":229,"line":322},[227,1493,1477],{"class":309},[227,1495,1496],{"class":309}," type",[227,1498,1499],{"class":233}," { FailureNotice } ",[227,1501,1483],{"class":309},[227,1503,1504],{"class":244}," 'tsumugi'",[227,1506,1489],{"class":233},[227,1508,1509],{"class":229,"line":334},[227,1510,1512],{"emptyLinePlaceholder":1511},true,"\n",[227,1514,1515,1518,1521,1524,1527,1530,1533,1535,1537,1540,1543,1546],{"class":229,"line":340},[227,1516,1517],{"class":309},"export",[227,1519,1520],{"class":309}," class",[227,1522,1523],{"class":237}," NotifyFailure",[227,1525,1526],{"class":309}," extends",[227,1528,1529],{"class":237}," Performer",[227,1531,1532],{"class":233},"\u003C",[227,1534,1466],{"class":237},[227,1536,248],{"class":233},[227,1538,1539],{"class":256},"void",[227,1541,1542],{"class":233},", {}, ",[227,1544,1545],{"class":237},"Env",[227,1547,1548],{"class":233},"> {\n",[227,1550,1551,1554,1557,1559,1563,1566,1569,1572,1574,1577,1579,1581],{"class":229,"line":363},[227,1552,1553],{"class":309},"  async",[227,1555,1556],{"class":237}," perform",[227,1558,509],{"class":233},[227,1560,1562],{"class":1561},"s4XuR","notice",[227,1564,1565],{"class":309},":",[227,1567,1568],{"class":237}," FailureNotice",[227,1570,1571],{"class":233},")",[227,1573,1565],{"class":309},[227,1575,1576],{"class":237}," Promise",[227,1578,1532],{"class":233},[227,1580,1539],{"class":256},[227,1582,1548],{"class":233},[227,1584,1585,1588,1591,1593,1595,1598,1600,1603,1606,1609],{"class":229,"line":842},[227,1586,1587],{"class":309},"    const",[227,1589,1590],{"class":256}," res",[227,1592,813],{"class":309},[227,1594,625],{"class":309},[227,1596,1597],{"class":237}," fetch",[227,1599,509],{"class":233},[227,1601,1602],{"class":256},"this",[227,1604,1605],{"class":233},".env.",[227,1607,1608],{"class":256},"SLACK_WEBHOOK",[227,1610,1611],{"class":233},", {\n",[227,1613,1614,1617,1620],{"class":229,"line":853},[227,1615,1616],{"class":233},"      method: ",[227,1618,1619],{"class":244},"'POST'",[227,1621,331],{"class":233},[227,1623,1624,1627,1630,1633,1636,1639,1642,1644,1646,1649,1652,1654,1656,1659,1662],{"class":229,"line":869},[227,1625,1626],{"class":233},"      body: ",[227,1628,1629],{"class":256},"JSON",[227,1631,1632],{"class":233},".",[227,1634,1635],{"class":237},"stringify",[227,1637,1638],{"class":233},"({ text: ",[227,1640,1641],{"class":244},"`${",[227,1643,1562],{"class":233},[227,1645,1632],{"class":244},[227,1647,1648],{"class":233},"binding",[227,1650,1651],{"class":244},"} が失敗しました: ${",[227,1653,1562],{"class":233},[227,1655,1632],{"class":244},[227,1657,1658],{"class":233},"error",[227,1660,1661],{"class":244},"}`",[227,1663,1664],{"class":233}," }),\n",[227,1666,1667],{"class":229,"line":879},[227,1668,1669],{"class":233},"    });\n",[227,1671,1672,1675,1678,1681,1684,1686,1688,1690,1692,1695,1698,1700,1703,1705],{"class":229,"line":894},[227,1673,1674],{"class":309},"    if",[227,1676,1677],{"class":233}," (",[227,1679,1680],{"class":309},"!",[227,1682,1683],{"class":233},"res.ok) ",[227,1685,644],{"class":309},[227,1687,647],{"class":309},[227,1689,650],{"class":237},[227,1691,509],{"class":233},[227,1693,1694],{"class":244},"`notification failed: ${",[227,1696,1697],{"class":233},"res",[227,1699,1632],{"class":244},[227,1701,1702],{"class":233},"status",[227,1704,1661],{"class":244},[227,1706,658],{"class":233},[227,1708,1709],{"class":229,"line":900},[227,1710,1711],{"class":233},"  }\n",[227,1713,1714],{"class":229,"line":906},[227,1715,1189],{"class":233},[139,1717,1466],{"id":1718},"failurenotice",[20,1720,1721,1730],{},[23,1722,1723],{},[26,1724,1725,1728],{},[29,1726,1727],{},"이름",[29,1729,727],{},[35,1731,1732,1742,1751,1764,1773,1782,1793,1805,1817],{},[26,1733,1734,1739],{},[40,1735,1736],{},[43,1737,1738],{},"jobId",[40,1740,1741],{},"실패한 잡의 ID",[26,1743,1744,1748],{},[40,1745,1746],{},[43,1747,1648],{},[40,1749,1750],{},"실패한 잡의 binding",[26,1752,1753,1758],{},[40,1754,1755],{},[43,1756,1757],{},"state",[40,1759,1760,528,1762],{},[43,1761,85],{},[43,1763,108],{},[26,1765,1766,1770],{},[40,1767,1768],{},[43,1769,119],{},[40,1771,1772],{},"실행한 횟수",[26,1774,1775,1779],{},[40,1776,1777],{},[43,1778,175],{},[40,1780,1781],{},"시도 횟수의 상한",[26,1783,1784,1788],{},[40,1785,1786],{},[43,1787,1658],{},[40,1789,1790,1791],{},"마지막 시도의 에러. 기록이 없으면 ",[43,1792,756],{},[26,1794,1795,1800],{},[40,1796,1797],{},[43,1798,1799],{},"runId",[40,1801,1802,1803],{},"투입한 Run. 단독으로 투입한 잡은 ",[43,1804,756],{},[26,1806,1807,1812],{},[40,1808,1809],{},[43,1810,1811],{},"nodeId",[40,1813,1814,1815],{},"투입한 node. 단독으로 투입한 잡은 ",[43,1816,756],{},[26,1818,1819,1824],{},[40,1820,1821],{},[43,1822,1823],{},"failedAt",[40,1825,1826],{},"실패한 시각. epoch 밀리초",[115,1828,1829,1830,1832,1833,1835,1836,1838,1839,1841,1842,1844,1846],{},"모든 binding의 잡이 알림 대상입니다.",[122,1831],{},"\n알림은 1건의 잡으로 실행됩니다.",[122,1834],{},"\n알림 잡이 실패하면 그 잡은 목록에 표시됩니다.",[122,1837],{},"\n알림 잡도 다른 잡과 마찬가지로 재시도 대상입니다.",[122,1840],{},"\n알림을 받는 binding 자신의 잡 실패는 알림이 전달되지 않습니다.",[122,1843],{},[43,1845,1409],{},"를 지정하기 전에 실패한 잡은 대상이 아닙니다.",[15,1848,1850],{"id":1849},"終了の通知","종료 알림",[115,1852,1853,1856,1857,1859,1860,1863,1864,248,1866,248,1868,248,1870,1872,1873,1875,1877,1878,1881],{},[43,1854,1855],{},"onSettled","를 지정하면 실패뿐 아니라 종료된 잡이 지정한 performer에 알림으로 전달됩니다.",[122,1858],{},"\n알림을 보낼 상태는 ",[43,1861,1862],{},"states","에 지정하며 ",[43,1865,75],{},[43,1867,85],{},[43,1869,98],{},[43,1871,108],{}," 중에서 선택합니다.",[122,1874],{},[43,1876,1862],{},"는 필수입니다. 빈 배열이나 올바르지 않은 상태를 지정하면 ",[43,1879,1880],{},"defineTsumugi","에서 예외가 발생합니다.",[218,1883,1885],{"className":220,"code":1884,"language":222,"meta":223,"style":223},"const tsumugi = defineTsumugi({\n  performers,\n  onSettled: {\n    binding: 'NotifySettled',\n    states: ['COMPLETED', 'FAILED', 'CANCELLED', 'STALLED'],\n  },\n});\n",[43,1886,1887,1899,1903,1908,1918,1944,1948],{"__ignoreMap":223},[227,1888,1889,1891,1893,1895,1897],{"class":229,"line":230},[227,1890,611],{"class":309},[227,1892,810],{"class":256},[227,1894,813],{"class":309},[227,1896,816],{"class":237},[227,1898,819],{"class":233},[227,1900,1901],{"class":229,"line":322},[227,1902,824],{"class":233},[227,1904,1905],{"class":229,"line":334},[227,1906,1907],{"class":233},"  onSettled: {\n",[227,1909,1910,1913,1916],{"class":229,"line":340},[227,1911,1912],{"class":233},"    binding: ",[227,1914,1915],{"class":244},"'NotifySettled'",[227,1917,331],{"class":233},[227,1919,1920,1923,1926,1928,1931,1933,1936,1938,1941],{"class":229,"line":363},[227,1921,1922],{"class":233},"    states: [",[227,1924,1925],{"class":244},"'COMPLETED'",[227,1927,248],{"class":233},[227,1929,1930],{"class":244},"'FAILED'",[227,1932,248],{"class":233},[227,1934,1935],{"class":244},"'CANCELLED'",[227,1937,248],{"class":233},[227,1939,1940],{"class":244},"'STALLED'",[227,1942,1943],{"class":233},"],\n",[227,1945,1946],{"class":229,"line":842},[227,1947,909],{"class":233},[227,1949,1950],{"class":229,"line":853},[227,1951,366],{"class":233},[115,1953,1954,1956,1957,1959,1960,1962,1963,1467],{},[43,1955,75],{},"를 포함하면 완료된 잡과 같은 수의 알림 잡이 투입됩니다.",[122,1958],{},"\n잡의 건수를 확인한 후에 지정하세요.",[122,1961],{},"\n알림을 받는 performer는 ",[43,1964,1965],{},"SettledNotice",[139,1967,1965],{"id":1968},"settlednotice",[20,1970,1971,1979],{},[23,1972,1973],{},[26,1974,1975,1977],{},[29,1976,1727],{},[29,1978,727],{},[35,1980,1981,1990,1999,2008,2016,2024,2035,2053,2063,2073],{},[26,1982,1983,1987],{},[40,1984,1985],{},[43,1986,1738],{},[40,1988,1989],{},"종료된 잡의 ID",[26,1991,1992,1996],{},[40,1993,1994],{},[43,1995,1648],{},[40,1997,1998],{},"종료된 잡의 binding",[26,2000,2001,2005],{},[40,2002,2003],{},[43,2004,1757],{},[40,2006,2007],{},"종료 시의 상태",[26,2009,2010,2014],{},[40,2011,2012],{},[43,2013,119],{},[40,2015,1772],{},[26,2017,2018,2022],{},[40,2019,2020],{},[43,2021,175],{},[40,2023,1781],{},[26,2025,2026,2030],{},[40,2027,2028],{},[43,2029,1658],{},[40,2031,2032,2033],{},"마지막 시도의 에러. 실패 이외의 종료와 기록이 없는 경우는 ",[43,2034,756],{},[26,2036,2037,2042],{},[40,2038,2039],{},[43,2040,2041],{},"result",[40,2043,2044,2047,2048,2050,2051],{},[43,2045,2046],{},"perform","의 반환값. ",[43,2049,75],{}," 이외와 저장 상한을 초과한 경우는 ",[43,2052,756],{},[26,2054,2055,2059],{},[40,2056,2057],{},[43,2058,1799],{},[40,2060,1802,2061],{},[43,2062,756],{},[26,2064,2065,2069],{},[40,2066,2067],{},[43,2068,1811],{},[40,2070,1814,2071],{},[43,2072,756],{},[26,2074,2075,2080],{},[40,2076,2077],{},[43,2078,2079],{},"settledAt",[40,2081,2082],{},"종료된 시각. epoch 밀리초",[115,2084,2085,2086,2088,2089,2091,2093,2094,2096,2097,134,2099,2101,2102,2104,2106],{},"알림을 받는 binding 자신의 잡과 ",[43,2087,1409],{},"로 알림을 받는 binding의 잡은 알림이 전달되지 않습니다.",[122,2090],{},[43,2092,1409],{},"와 동시에 지정한 경우, ",[43,2095,1862],{},"에 포함한 ",[43,2098,85],{},[43,2100,108],{},"는 두 알림 대상 모두에 전달됩니다.",[122,2103],{},[43,2105,1855],{},"를 지정하기 전에 종료된 잡은 대상이 아닙니다.",[15,2108,2110],{"id":2109},"投入時の既定値","투입 시 기본값",[115,2112,2113,2116,2117,2119,2120,2122],{},[43,2114,2115],{},"onEnqueue","를 지정하면 잡을 투입할 때마다 ",[43,2118,2115],{},"가 호출되고, 그 반환값이 실행 옵션의 기본값으로 사용됩니다.",[122,2121],{},"\n호출하는 쪽에서 지정한 값이 항상 우선하며, 기본값은 옵션이 명시되지 않은 경우에만 적용됩니다.",[218,2124,2126],{"className":220,"code":2125,"language":222,"meta":223,"style":223},"const tsumugi = defineTsumugi({\n  performers,\n  onEnqueue: (input) => (input.binding === 'SlowJob' ? { timeoutMs: 300_000 } : undefined),\n});\n",[43,2127,2128,2140,2144,2189],{"__ignoreMap":223},[227,2129,2130,2132,2134,2136,2138],{"class":229,"line":230},[227,2131,611],{"class":309},[227,2133,810],{"class":256},[227,2135,813],{"class":309},[227,2137,816],{"class":237},[227,2139,819],{"class":233},[227,2141,2142],{"class":229,"line":322},[227,2143,824],{"class":233},[227,2145,2146,2149,2152,2155,2158,2161,2164,2167,2170,2173,2176,2179,2181,2183,2186],{"class":229,"line":334},[227,2147,2148],{"class":237},"  onEnqueue",[227,2150,2151],{"class":233},": (",[227,2153,2154],{"class":1561},"input",[227,2156,2157],{"class":233},") ",[227,2159,2160],{"class":309},"=>",[227,2162,2163],{"class":233}," (input.binding ",[227,2165,2166],{"class":309},"===",[227,2168,2169],{"class":244}," 'SlowJob'",[227,2171,2172],{"class":309}," ?",[227,2174,2175],{"class":233}," { timeoutMs: ",[227,2177,2178],{"class":256},"300_000",[227,2180,619],{"class":233},[227,2182,1565],{"class":309},[227,2184,2185],{"class":256}," undefined",[227,2187,2188],{"class":233},"),\n",[227,2190,2191],{"class":229,"line":340},[227,2192,366],{"class":233},[115,2194,2195,2196,248,2199,248,2202,248,2204,248,2206,248,2208,248,2210,248,2213,248,2216,248,2219,248,2222,2224,2225,2227,248,2229,248,2232,248,2234,248,2237,2239],{},"기본값으로 지정할 수 있는 실행 옵션은 ",[43,2197,2198],{},"traceparent",[43,2200,2201],{},"priority",[43,2203,175],{},[43,2205,179],{},[43,2207,501],{},[43,2209,389],{},[43,2211,2212],{},"delayMs",[43,2214,2215],{},"runAt",[43,2217,2218],{},"expiresAt",[43,2220,2221],{},"expiresInMs",[43,2223,779],{},"입니다.",[122,2226],{},[43,2228,1648],{},[43,2230,2231],{},"payload",[43,2233,1203],{},[43,2235,2236],{},"uniqueForMs",[43,2238,1195],{},"는 대상이 아닙니다.",[115,2241,2242,134,2244,2246,2247,932,2249,2251,2252,2258],{},[43,2243,1409],{},[43,2245,1855],{},"의 알림 잡에는 ",[43,2248,2115],{},[122,2250],{},"\n다른 Worker에서 투입하는 잡에도 적용하려면 ",[159,2253,2255],{"href":2254},"\u002Fko\u002Fguide\u002Fclient#%E6%8A%95%E5%85%A5%E6%99%82%E3%81%AE%E6%97%A2%E5%AE%9A%E5%80%A4",[43,2256,2257],{},"createClient","에 같은 함수를 전달하세요.",[2260,2261,2262],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":223,"searchDepth":334,"depth":334,"links":2264},[2265,2268,2271,2272,2273,2274,2278,2279,2280,2281,2284,2287],{"id":17,"depth":322,"text":18,"children":2266},[2267],{"id":141,"depth":334,"text":142},{"id":168,"depth":322,"text":169,"children":2269},[2270],{"id":212,"depth":334,"text":213},{"id":383,"depth":322,"text":384},{"id":495,"depth":322,"text":496},{"id":558,"depth":322,"text":162},{"id":708,"depth":322,"text":709,"children":2275},[2276,2277],{"id":935,"depth":334,"text":936},{"id":952,"depth":334,"text":953},{"id":1123,"depth":322,"text":1124},{"id":1148,"depth":322,"text":1148},{"id":1232,"depth":322,"text":1233},{"id":1403,"depth":322,"text":1404,"children":2282},[2283],{"id":1718,"depth":334,"text":1466},{"id":1849,"depth":322,"text":1850,"children":2285},[2286],{"id":1968,"depth":334,"text":1965},{"id":2109,"depth":322,"text":2110},"잡의 상태와 전이, 재시도와 백오프, 실행 보장, 타임아웃, 실행량 제한, 보존 기간, 실패와 종료 알림에 대해 설명합니다","md",{},"\u002Fko\u002Fguide\u002Fexecution","2026-07-22",{"title":6,"description":2288},"ko\u002Fguide\u002Fexecution","2026-10-25","EoMluEKx42vyLrxsV5VjUO1RyeN17LMILhqmFbOMcJA",false,1794027573975]