{"id":12471,"date":"2021-11-15T10:34:56","date_gmt":"2021-11-15T18:34:56","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=12471"},"modified":"2025-06-13T22:39:19","modified_gmt":"2025-06-14T05:39:19","slug":"couchbase-eventing-handling-errors-and-retries","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-eventing-handling-errors-and-retries\/","title":{"rendered":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc774\ubca4\ud2b8 \ucc98\ub9ac \uc624\ub958 \ubc0f \uc7ac\uc2dc\ub3c4"},"content":{"rendered":"<p><span style=\"font-weight: 400\">\uadf8\ub9ac\uace0 <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/eventing\/eventing-overview.html\"><span style=\"font-weight: 400\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc774\ubca4\ud2b8 \uc11c\ube44\uc2a4<\/span><\/a><span style=\"font-weight: 400\"> \ub97c \uc0ac\uc6a9\ud558\uba74 \ub370\uc774\ud130\uc758 \ub3cc\uc5f0\ubcc0\uc774(\ub610\ub294 \ubcc0\uacbd)\uc5d0 \ub300\ud574 \uc989\uc2dc \uc870\uce58\ub97c \ucde8\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ubaa8\ub4e0 \uc791\uc5c5 <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/products\/eventing\/\">\uc774\ubca4\ud2b8<\/a> \ub294 \uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8\ub85c \uc791\uc131\ub41c \uc791\uc740 \ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1\uc778 \ub78c\ub2e4\ub97c \uc2e4\ud589\ud558\uc5ec \uc218\ud589\ub429\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\uc77c\ubc18\uc801\uc778 \uc0ac\uc6a9 \uc0ac\ub840\ub85c\ub294 \ub370\uc774\ud130 \uac15\ud654, \ubb38\uc11c \ubcf4\uad00, \uc678\ubd80 REST \uc11c\ube44\uc2a4\uc640\uc758 \ud1b5\ud569 \ub4f1\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc790\uc138\ud55c \ub0b4\uc6a9 \ubcf4\uae30 <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/eventing\/eventing-examples.html\"><span style=\"font-weight: 400\">\uc5ec\uae30<\/span><\/a><span style=\"font-weight: 400\">.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\ub2e4\uc74c \ube14\ub85c\uadf8\uc5d0\uc11c\ub294 \uc774\ubca4\ud2b8 \ub9ac\uc2a4\ub108 \uc2e4\ud589 \uc911 \uc624\ub958\ub97c \ucc98\ub9ac\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574 \uac04\ub7b5\ud558\uac8c \uc124\uba85\ud569\ub2c8\ub2e4. \uc7ac\uc2dc\ub3c4 \uba54\ucee4\ub2c8\uc998\uc744 \uc0ac\uc6a9\ud558\uba74 \uc774\ubca4\ud2b8 \ub9ac\uc2a4\ub108\uac00 \uc2e4\ud589 \uc911\uc5d0 \uc2e4\ud328\ud558\ub354\ub77c\ub3c4 \uc608\uc0c1\ub41c \uc791\uc5c5\uc774 \uc218\ud589\ub418\ub3c4\ub85d \ubcf4\uc7a5\ud569\ub2c8\ub2e4.<\/span><\/p>\n<p><b><i>\uc0d8\ud50c \uc560\ud50c\ub9ac\ucf00\uc774\uc158<\/i><\/b><\/p>\n<p><span style=\"font-weight: 400\">\uc608\ub97c \ub4e4\uc5b4, \uace0\uac1d \uc8fc\ubb38\uc744 Couchbase \uceec\ub809\uc158\uc5d0 \uc800\uc7a5\ud558\ub294 \uc804\uc790\uc0c1\uac70\ub798 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uc77c\ubd80\ub97c \uad6c\ud604\ud588\uc2b5\ub2c8\ub2e4. \uc8fc\ubb38 \uc0c1\ud0dc\uac00 \ub2e4\uc74c\uacfc \uac19\uc774 \ubcc0\uacbd\ub418\ub294 \uc989\uc2dc <\/span><b>\uc720\ub8cc<\/b><span style=\"font-weight: 400\">\ub97c \ud074\ub9ad\ud558\uc5ec \uace0\uac1d\uc5d0\uac8c \uc8fc\ubb38 \ud655\uc778\uc744 \ubcf4\ub0b4\ub824\uace0 \ud569\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\uc774\ub97c \uc704\ud574 Couchbase \uc774\ubca4\ud2b8 \ub9ac\uc2a4\ub108\ub97c \uc678\ubd80\uc758 <\/span><i><span style=\"font-weight: 400\">\uc774\uba54\uc77c \uc11c\ube44\uc2a4<\/span><\/i><span style=\"font-weight: 400\">. \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc774\ubca4\ud2b8 \ub9ac\uc2a4\ub108\ub294 \uc8fc\ubb38 \ubb38\uc11c\uc758 \ubcc0\uacbd \uc0ac\ud56d\uc744 \ud3ec\ucc29\ud558\uace0 \uc8fc\ubb38\uc774 \uacb0\uc81c\ub418\uc5c8\ub294\uc9c0 \ud655\uc778\ud55c \ub2e4\uc74c \uc774\uba54\uc77c \uc11c\ube44\uc2a4\ub97c \ud638\ucd9c\ud558\uc5ec \ud655\uc778 \uba54\uc2dc\uc9c0\ub97c \ud2b8\ub9ac\uac70\ud569\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\uc774\uba54\uc77c \uc11c\ube44\uc2a4\ub294 REST \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub97c \uc81c\uacf5\ud558\ub294 \ub3c5\ub9bd\ud615 \ub9c8\uc774\ud06c\ub85c\uc11c\ube44\uc2a4\uc785\ub2c8\ub2e4. \uc774\ubca4\ud2b8 \ub9ac\uc2a4\ub108\uc5d0\uc11c \ub9c8\uc774\ud06c\ub85c\uc11c\ube44\uc2a4\ub97c \ud638\ucd9c\ud558\uae30 \uc704\ud574 Couchbase Eventing\uc5d0 \uc9c1\uc811 \ub0b4\uc7a5\ub41c cURL \uc9c0\uc6d0\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-12458 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-10-at-22.37.22-1024x352.png\" alt=\"\" width=\"900\" height=\"309\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/Screen-Shot-2021-11-10-at-22.37.22-1024x352.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/Screen-Shot-2021-11-10-at-22.37.22-300x103.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/Screen-Shot-2021-11-10-at-22.37.22-768x264.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/Screen-Shot-2021-11-10-at-22.37.22-1536x529.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/Screen-Shot-2021-11-10-at-22.37.22-2048x705.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/Screen-Shot-2021-11-10-at-22.37.22-20x7.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/Screen-Shot-2021-11-10-at-22.37.22-1320x454.png 1320w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<p><i><span style=\"font-weight: 400\">\uac1c\ub150\uc801 \ud750\ub984: \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc5d0\uc11c \uc8fc\ubb38\uc774 \uc5c5\ub370\uc774\ud2b8\ub418\uba74 \uc774\ubca4\ud2b8 \ub9ac\uc2a4\ub108\uac00 \uc774\ubca4\ud2b8\ub97c \ud2b8\ub9ac\uac70\ud558\uace0 \uc218\uc9d1\ud569\ub2c8\ub2e4. \uadf8\ub7ec\uba74 \uc774\ubca4\ud2b8 \ub9ac\uc2a4\ub108\uac00 \uc678\ubd80 \uc774\uba54\uc77c \uc11c\ube44\uc2a4\ub85c \ud638\ucd9c\ud569\ub2c8\ub2e4.<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400\">\u00a0<\/span><b>\uc624\ub958\ub97c \ubc18\ud658\ud558\ub294 \uc774\uba54\uc77c \uc11c\ube44\uc2a4<\/b><\/p>\n<p><span style=\"font-weight: 400\">\uc124\uba85\ud55c \uc2dc\ub098\ub9ac\uc624\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \uacbd\uc6b0 \ub9e4\uc6b0 \uc798 \uc791\ub3d9\ud569\ub2c8\ub2e4. <\/span><i><span style=\"font-weight: 400\">\uc774\uba54\uc77c \uc11c\ube44\uc2a4<\/span><\/i><span style=\"font-weight: 400\"> \uac00 \uc791\ub3d9\ud569\ub2c8\ub2e4. \ud558\uc9c0\ub9cc <\/span><i><span style=\"font-weight: 400\">\uc774\uba54\uc77c \uc11c\ube44\uc2a4<\/span><\/i><span style=\"font-weight: 400\"> \uac00 \uc624\ub958\ub97c \ubc18\ud658\ud558\ub098\uc694? \uc774\ubca4\ud2b8 \uc218\uc2e0\uae30\uc5d0\uc11c \uc774\uba54\uc77c \uc11c\ube44\uc2a4\ub85c\uc758 \uc694\uccad\uc774 \uc2e4\ud328\ud558\ubbc0\ub85c \uace0\uac1d\uc5d0\uac8c \ud655\uc778 \uba54\uc2dc\uc9c0\uac00 \uc804\uc1a1\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc2e4\ud328 \uc2dc\uc810\uc5d0 Couchbase \ubb38\uc11c \ubcc0\uacbd \uc774\ubca4\ud2b8\uac00 \uc774\ubbf8 \ucc98\ub9ac\ub418\uc5c8\uc73c\ubbc0\ub85c \ub2e4\ub978 \ubcc0\uacbd \uc0ac\ud56d\uc774 \uc5c6\ub294 \ud55c \ub3d9\uc77c\ud55c \ubb38\uc11c\uc5d0 \ub300\ud55c \uc0c8 \uc774\ubca4\ud2b8\uac00 \ud2b8\ub9ac\uac70\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ud655\uc778\uc774 \uc804\uc1a1\ub418\ub3c4\ub85d \ud558\ub824\uba74 \uc624\ub958\ub97c \ucc98\ub9ac\ud558\uace0 \uc7ac\uc2dc\ub3c4 \uba54\ucee4\ub2c8\uc998\uc744 \uad6c\ud604\ud574\uc57c \ud569\ub2c8\ub2e4. \uc774\ub807\uac8c \ud558\uba74 \uc678\ubd80 \uc11c\ube44\uc2a4\uc758 \uc77c\uc2dc\uc801\uc778 \ubb38\uc81c\ub97c \ud574\uacb0\ud568\uacfc \ub3d9\uc2dc\uc5d0 \ud655\uc778\uc774 \uc804\uc1a1\ub418\ub3c4\ub85d \ubcf4\uc7a5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\u00a0<\/span><span style=\"font-weight: 400\">\uc774\uc5d0 \uc811\uadfc\ud558\ub294 \ubc29\ubc95\uc5d0\ub294 \uc5ec\ub7ec \uac00\uc9c0\uac00 \uc788\uc2b5\ub2c8\ub2e4. \uc544\ub798 \uc608\uc81c\uc5d0\uc11c\ub294 \uc774\ubca4\ud2b8 \ub9ac\uc2a4\ub108 \uc2e4\ud589\uc774 \uc2e4\ud328\ud55c \ubb38\uc11c\uc5d0 \ub300\ud55c \ucc38\uc870\ub97c \uc800\uc7a5\ud558\ub294 '\ub2e4\uc2dc \uc2dc\ub3c4'\ub77c\ub294 \uc0c8 \uceec\ub809\uc158\uc744 \ub9cc\ub4e4\uae30\ub85c \uc120\ud0dd\ud588\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-12459 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-10-at-22.39.25-1024x435.png\" alt=\"\" width=\"900\" height=\"382\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/Screen-Shot-2021-11-10-at-22.39.25-1024x435.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/Screen-Shot-2021-11-10-at-22.39.25-300x127.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/Screen-Shot-2021-11-10-at-22.39.25-768x326.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/Screen-Shot-2021-11-10-at-22.39.25-1536x652.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/Screen-Shot-2021-11-10-at-22.39.25-2048x869.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/Screen-Shot-2021-11-10-at-22.39.25-20x8.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/Screen-Shot-2021-11-10-at-22.39.25-1320x560.png 1320w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<p><span style=\"font-weight: 400\">\u00a0<\/span><span style=\"font-weight: 400\">\uc774\ubca4\ud2b8 \ub9ac\uc2a4\ub108\ub294 \uc8fc\ubb38 \ubb38\uc11c\uc758 \ubcc0\uacbd \uc0ac\ud56d\uc744 \uc218\uc2e0\ud55c \ub2e4\uc74c(#1 \ub2e8\uacc4) \uc774\uba54\uc77c \uc11c\ube44\uc2a4\ub97c \ud638\ucd9c\ud569\ub2c8\ub2e4(#2 \ub2e8\uacc4). \uc774\uba54\uc77c \uc11c\ube44\uc2a4 \ud638\ucd9c\uc774 \uc131\uacf5\ud558\uba74 \uc774\ubca4\ud2b8 \ub9ac\uc2a4\ub108\ub294 \uc8fc\ubb38 \ubb38\uc11c\uc758 \ud655\uc778 \uba54\uc2dc\uc9c0 \uc0c1\ud0dc\ub97c \uc5c5\ub370\uc774\ud2b8\ud569\ub2c8\ub2e4(#3 \ub2e8\uacc4). \uadf8\ub7ec\ub098 \uc2e4\ud328\ud560 \uacbd\uc6b0 \uc7ac\uc2dc\ub3c4 \ubb38\uc11c\uac00 \uc0dd\uc131\ub418\uc5b4 '\uc7ac\uc2dc\ub3c4' \uceec\ub809\uc158\uc5d0 \uc800\uc7a5\ub429\ub2c8\ub2e4(#3* \ub2e8\uacc4).<\/span><\/p>\n<p><span style=\"font-weight: 400\">\ubb38\uc11c\uc5d0 \ub300\ud55c \ucc38\uc870\ub97c \uc720\uc9c0\ud558\uba74 \uc2e4\ud328\ud55c \ubaa8\ub4e0 \uc5c5\ub370\uc774\ud2b8\ub97c \uc2dd\ubcc4\ud560 \uc218 \uc788\uace0 \ub098\uc911\uc5d0 \ub2e4\uc2dc \uc2e4\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub294 \uc6b4\uc601\uc790\uac00 \uc218\ub3d9\uc73c\ub85c \uac1c\uc785\ud558\uac70\ub098 Couchbase \uc774\ubca4\ud2b8 \ud0c0\uc774\uba38\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc790\ub3d9\uc73c\ub85c \uc7ac\uc2dc\ub3c4\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-12460 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/11\/Screen-Shot-2021-11-10-at-22.40.24-1024x435.png\" alt=\"\" width=\"900\" height=\"382\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/Screen-Shot-2021-11-10-at-22.40.24-1024x435.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/Screen-Shot-2021-11-10-at-22.40.24-300x127.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/Screen-Shot-2021-11-10-at-22.40.24-768x326.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/Screen-Shot-2021-11-10-at-22.40.24-1536x652.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/Screen-Shot-2021-11-10-at-22.40.24-2048x869.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/Screen-Shot-2021-11-10-at-22.40.24-20x8.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/Screen-Shot-2021-11-10-at-22.40.24-1320x560.png 1320w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uc9c0\uc815\ub41c \ubb38\uc11c ID\ub97c \uac00\uc9c4 \ubb38\uc11c\ub97c \uc7ac\uc2dc\ub3c4 \uceec\ub809\uc158\uc5d0 \ucd94\uac00\ud558\uc5ec \uc7ac\uc2dc\ub3c4 \ud504\ub85c\uc138\uc2a4\ub97c \uc2dc\uc791\ud569\ub2c8\ub2e4. \uc81c\uacf5\ub41c \ud0c0\uc774\uba38 \uac04\uaca9\uc5d0 \ub530\ub77c \ubc18\ubcf5 \ud0c0\uc774\uba38\uac00 \uc0dd\uc131\ub429\ub2c8\ub2e4.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\ud0c0\uc774\uba38 \uc2e4\ud589 \uc2dc \uc791\uc740 \uc2dc\uac04 \ud000\ud130\ubcf4\ub2e4 \uc624\ub798\ub41c \ubaa8\ub4e0 \ubb38\uc11c\ub294 <\/span><i><span style=\"font-weight: 400\">\ub2e4\uc2dc \uc2dc\ub3c4<\/span><\/i><span style=\"font-weight: 400\"> \uceec\ub809\uc158\uc774 \uc5c5\ub370\uc774\ud2b8\ub429\ub2c8\ub2e4. \ub2e4\uc74c\uacfc \uac19\uc740 \uc18d\uc131\uc744 \ucd94\uac00\ud558\uba74 <\/span><i><span style=\"font-weight: 400\">fireRetry = true<\/span><\/i><span style=\"font-weight: 400\"> \ub97c \uc7ac\uc2dc\ub3c4 \ubb38\uc11c\uc5d0 \ucd94\uac00\ud558\uba74 \uc774\ubca4\ud2b8 \ub9ac\uc2a4\ub108\uac00 \ud3ec\ucc29\ud55c \ub610 \ub2e4\ub978 \uc5c5\ub370\uc774\ud2b8 \uc774\ubca4\ud2b8\ub97c \ud2b8\ub9ac\uac70\ud558\uc5ec \uc7ac\uc2dc\ub3c4 \uba54\ucee4\ub2c8\uc998\uc744 \uc2e4\ud589\ud569\ub2c8\ub2e4. \uc774\ub807\uac8c \ud558\uba74 \uc7ac\uc2dc\ub3c4 \uceec\ub809\uc158\uc758 \ubaa8\ub4e0 \ubb38\uc11c\uc5d0 \ubd88\uc744 \ucf1c\ub294 \uc7ac\uadc0\uc801 \ub3cc\uc5f0\ubcc0\uc774\uac00 \ubcd1\ub82c\ub85c \uc2e4\ud589\ub429\ub2c8\ub2e4. \uc774\uc81c \uc7ac\uc2dc\ub3c4 \ud568\uc218\ub294 \uc0ac\uc6a9 \uac00\ub2a5\ud55c \ubaa8\ub4e0 \uc6cc\ucee4 \uc2a4\ub808\ub4dc\ub97c \ubcd1\ub82c\ub85c \uc0ac\uc6a9\ud558\uc5ec \uc2e4\ud589\ub429\ub2c8\ub2e4.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\ubb38\uc11c \uc5c5\ub370\uc774\ud2b8 \uc774\ubca4\ud2b8\ub294 \uac01 \uc7ac\uc2dc\ub3c4 \ubb38\uc11c\uc5d0 \ub300\ud574 \uac1c\ubcc4\uc801\uc73c\ub85c \ud2b8\ub9ac\uac70\ub429\ub2c8\ub2e4.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uc778\ubc14\uc6b4\ub4dc \uceec\ub809\uc158\uc5d0\uc11c \ud574\ub2f9 \uc8fc\ubb38 \ubb38\uc11c\uac00 \uac80\uc0c9\ub429\ub2c8\ub2e4.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uc774\uc81c \uc774\uba54\uc77c \uc11c\ube44\uc2a4\uac00 \ud638\ucd9c\ub429\ub2c8\ub2e4.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uc774\uba54\uc77c \uc11c\ube44\uc2a4\uc5d0 \ub300\ud55c \ud638\ucd9c\uc774 \uc131\uacf5\ud558\uba74 \uc774\ubca4\ud2b8 \uc218\uc2e0\uae30\uac00 \uc8fc\ubb38 \ubb38\uc11c\uc758 \ud655\uc778 \uba54\uc2dc\uc9c0 \uc0c1\ud0dc\ub97c \uc5c5\ub370\uc774\ud2b8\ud558\uace0 \uc7ac\uc2dc\ub3c4 \ubb38\uc11c\ub97c \uc81c\uac70\ud569\ub2c8\ub2e4.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uc2e4\ud328\ud560 \uacbd\uc6b0 \uc7ac\uc2dc\ub3c4 \ubb38\uc11c\uac00 \uc5c5\ub370\uc774\ud2b8\ub418\uc5b4 '\uc7ac\uc2dc\ub3c4' \uceec\ub809\uc158\uc5d0 \uc800\uc7a5\ub429\ub2c8\ub2e4.<\/span><\/li>\n<\/ol>\n<p><b>\ucf54\ub4dc \uac80\ud1a0<\/b><\/p>\n<p><span style=\"font-weight: 400\">\u00a0<\/span><span style=\"font-weight: 400\">\uc774\uc81c \uac1c\ub150 \uc124\uacc4\ub97c \uc124\uc815\ud588\uc73c\ub2c8 \uc0d8\ud50c \uad6c\ud604\uc744 \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4:<\/span><\/p>\n<p><b>\uc804\uc81c \uc870\uac74<\/b><span style=\"font-weight: 400\">:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 7 \uc5d4\ud130\ud504\ub77c\uc774\uc988 \uc5d0\ub514\uc158. \uc800\ub294 \ub85c\uceec \ucef4\ud4e8\ud130\uc758 Docker\uc5d0\uc11c \ub2e8\uc77c \ub178\ub4dc \ud074\ub7ec\uc2a4\ud130\ub85c Couchbase\ub97c \uc2e4\ud589\ud569\ub2c8\ub2e4. (https:\/\/docs.couchbase.com\/server\/current\/install\/getting-started-docker.html)<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uac1c\ubc1c \ubaa9\uc801\uc73c\ub85c \ub2e4\uc74c \uc11c\ube44\uc2a4\ub97c \uc2e4\ud589\ud558\ub294 \ub2e8\uc77c \ub178\ub4dc \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ud074\ub7ec\uc2a4\ud130\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4:<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uc778\ub371\uc2a4, \ucffc\ub9ac, \uc774\ubca4\ud2b8 \ubc0f \ub370\uc774\ud130 \uc11c\ube44\uc2a4<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">\ud504\ub85c\ub355\uc158 \uc0ac\uc6a9\uc5d0\ub294 \ub2e8\uc77c \ub178\ub4dc \uc124\uce58\ub97c \uad8c\uc7a5\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<p><b>\uc900\ube44<\/b><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\ub77c\ub294 \uc774\ub984\uc758 \ubc84\ud0b7\uc744 \ub9cc\ub4ed\ub2c8\ub2e4. <\/span><b><i>\uc8fc\ubb38<\/i><\/b><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uc5d0\uc11c \ub450 \uac1c\uc758 \uceec\ub809\uc158\uc744 \ub9cc\ub4ed\ub2c8\ub2e4. <\/span><b><i>\uc8fc\ubb38<\/i><\/b><span style=\"font-weight: 400\"> \ubc84\ud0b7 _\uae30\ubcf8 \ubc94\uc704:<\/span>\n<ul>\n<li style=\"font-weight: 400\"><b>\uc778\ubc14\uc6b4\ub4dc<\/b><span style=\"font-weight: 400\"> (\uc5ec\uae30\uc5d0\ub294 \ubaa8\ub4e0 \uc218\uc2e0 \uc8fc\ubb38\uc774 \ud3ec\ud568\ub429\ub2c8\ub2e4.)<\/span><\/li>\n<li style=\"font-weight: 400\"><b>\ub2e4\uc2dc \uc2dc\ub3c4<\/b><span style=\"font-weight: 400\"> (\uc5ec\uae30\uc5d0\ub294 \uc2e4\ud328\ud55c \uc8fc\ubb38\uc5d0 \ub300\ud55c \uc7ac\uc2dc\ub3c4 \ubb38\uc11c\uac00 \ud3ec\ud568\ub429\ub2c8\ub2e4.)<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-12461 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/11\/eventing1-1024x331.png\" alt=\"\" width=\"900\" height=\"291\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/eventing1-1024x331.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/eventing1-300x97.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/eventing1-768x248.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/eventing1-1536x496.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/eventing1-20x6.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/eventing1-1320x427.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/eventing1.png 1600w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\ubc84\ud0b7 \ub9cc\ub4e4\uae30 <\/span><b>'\uba54\ud0c0\ub370\uc774\ud130'<\/b><span style=\"font-weight: 400\">. \uae30\ubcf8 \ubc94\uc704\uc640 \uae30\ubcf8 \uceec\ub809\uc158\uc744 \uc0ac\uc6a9\ud558\uaca0\uc2b5\ub2c8\ub2e4. \uba54\ud0c0\ub370\uc774\ud130 \ubc84\ud0b7\uc740 \uc774\ubca4\ud2b8 \uba54\ud0c0\ub370\uc774\ud130\uc5d0 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.<\/span><\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-12462 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/11\/eventing2-1024x226.png\" alt=\"\" width=\"900\" height=\"199\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/eventing2-1024x226.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/eventing2-300x66.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/eventing2-768x169.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/eventing2-1536x339.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/eventing2-20x4.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/eventing2-1320x291.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/eventing2.png 1600w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uc5d0 \uc778\ub371\uc2a4\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4. <\/span><i><span style=\"font-weight: 400\">\ub2e4\uc2dc \uc2dc\ub3c4<\/span><\/i><span style=\"font-weight: 400\"> \uceec\ub809\uc158\uc744 \uc0dd\uc131\ud569\ub2c8\ub2e4. \uc7ac\uc2dc\ub3c4 \uc218\uc2e0\uae30\ub294 N1QL\uc744 \uc0ac\uc6a9\ud558\uc5ec \uceec\ub809\uc158\uc5d0 \ud3ec\ud568\ub41c \ubaa8\ub4e0 \ubb38\uc11c\ub97c \ucffc\ub9ac\ud558\ubbc0\ub85c \ucffc\ub9ac\uac00 \uc2e4\ud589\ub418\ub824\uba74 \uc778\ub371\uc2a4\uac00 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4.<\/span><\/li>\n<\/ul>\n<pre class=\"lang:default decode:true\">CREATE PRIMARY INDEX idx_default_primary ON orders._default.retry USING GSI;<\/pre>\n<p><span style=\"font-weight: 400\">\u00a0<\/span><b><i>\ub370\uc774\ud130 \ubaa8\ub378 \uc8fc\ubb38 \ubb38\uc11c<\/i><\/b><\/p>\n<p><span style=\"font-weight: 400\">\uc774 \uc0d8\ud50c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c\ub294 \uc8fc\ubb38 \ubb38\uc11c\uc5d0 \uad00\ub828 \ud544\ub4dc\ub9cc \ud3ec\ud568\ud558\ub294 \uacbd\ub7c9 \ub370\uc774\ud130 \ubaa8\ub378\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uc8fc\ubb38 \ubb38\uc11c\uc5d0\uc11c \uc77c\ubc18\uc801\uc73c\ub85c \uae30\ub300\ud560 \uc218 \uc788\ub294 \ub2e4\ub978 \ub9ce\uc740 \ud544\ub4dc\ub294 \uc0dd\ub7b5\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<pre class=\"lang:default decode:true\">{\r\n\u00a0\u00a0\"email\": \"customer_email\",\r\n\u00a0\u00a0\"paymentStatus\": \"initiated\",\r\n\u00a0\u00a0\"confirmationEmailSent\": false,\r\n\u00a0\u00a0\"items\": [\r\n\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"name\": \"Swedish Meatballs 500g\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"amount\": 2,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"unitPrice\": 9.95\r\n\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0]\r\n}<\/pre>\n<p><b><i>\ub370\uc774\ud130 \ubaa8\ub378 \uc7ac\uc2dc\ub3c4 \ubb38\uc11c<\/i><\/b><\/p>\n<p><span style=\"font-weight: 400\">\uc7ac\uc2dc\ub3c4 \ubb38\uc11c\uc5d0\ub294 \uc8fc\ubb38 \ubb38\uc11c\uc758 \ubb38\uc11c ID, \uc2dc\ub3c4 \uce74\uc6b4\ud130 \ubc0f \ud0c0\uc784\uc2a4\ud0ec\ud504\uc640 \uac19\uc740 \uba87 \uac00\uc9c0 \uae30\ubcf8 \uc18d\uc131\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uc7ac\uc2dc\ub3c4 \ubb38\uc11c\uc758 <\/span><i><span style=\"font-weight: 400\">\uc720\ud615 <\/span><\/i><span style=\"font-weight: 400\">\u00a0\uc18d\uc131\uc740 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \ud544\uc694\ud558\uc9c0 \uc54a\uc9c0\ub9cc, \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \ubc30\uc1a1 \ubc0f \ubc30\ub2ec \uc5c5\ub370\uc774\ud2b8\ub3c4 \uc804\uc1a1\ud558\ub3c4\ub85d \ud655\uc7a5\ub418\ub294 \uacbd\uc6b0 \uc774\uba54\uc77c \uc54c\ub9bc \uc720\ud615\uc744 \uacb0\uc815\ud558\ub294 \ub370 \uc720\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<pre class=\"lang:default decode:true\">{\r\n\u00a0\u00a0\"type\": \"confirmation\",\r\n\u00a0\u00a0\"docId\": \"order_140\",\r\n\u00a0\u00a0\"attempt\": 1,\r\n\u00a0\u00a0\"ts\": 1632775908319\r\n}<\/pre>\n<p><b><i>\uc774\uba54\uc77c \uc11c\ube44\uc2a4 \ubaa8\uc758\u00a0<\/i><\/b><\/p>\n<p><span style=\"font-weight: 400\">\ub85c\uceec \uc6f9 \uc11c\ubc84\ub97c \uc2e4\ud589\ud558\ub294 \uac04\ub2e8\ud55c Python \uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc774\uba54\uc77c \uc11c\ube44\uc2a4\ub97c \ubaa8\uc758\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uc774 \uc2a4\ud06c\ub9bd\ud2b8\ub294 \ubb34\uc791\uc704\ub85c HTTP 200 OK\ub85c \uc751\ub2f5\ud558\uac70\ub098 HTTP 406\uc73c\ub85c \uc751\ub2f5\ud558\uc5ec \uc2e4\ud328\ub97c \ud45c\uc2dc\ud569\ub2c8\ub2e4.<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">31\ubc88 \uc904\uc758 \ub85c\uceec \ucef4\ud4e8\ud130\uc758 IP \uc8fc\uc18c\ub85c IP \uc8fc\uc18c\ub97c \uc5c5\ub370\uc774\ud2b8\ud569\ub2c8\ub2e4.<\/span><em>server = ThreadedHTTPServer(('IP\ub85c \ub300\uccb4', 9080), \ud578\ub4e4\ub7ec)<\/em><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\ub2e4\uc74c\uc744 \uc2e4\ud589\ud558\uc5ec \uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc2dc\uc791\ud558\uc138\uc694.<\/span><\/li>\n<\/ol>\n<p><b>\uc774\ubca4\ud2b8 \ub9ac\uc2a4\ub108<\/b><\/p>\n<p><span style=\"font-weight: 400\">\uc774\uc81c \ubaa8\ub4e0 \uc900\ube44\uac00 \uc644\ub8cc\ub418\uc5c8\uc73c\ubbc0\ub85c \ub450 \uac1c\uc758 \uc774\ubca4\ud2b8 \ub9ac\uc2a4\ub108\ub97c \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><b>EVT_SEND_CONFIRM_EMAIL<\/b><span style=\"font-weight: 400\"> - \uc774\uba54\uc77c \uc11c\ube44\uc2a4\uc640\uc758 \ud1b5\ud569\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/span><\/li>\n<li style=\"font-weight: 400\"><b>EVT_SEND_\ud655\uc778_\uc774\uba54\uc77c_\uc7ac\uc2dc\ub3c4<\/b><span style=\"font-weight: 400\"> - \uc5d0\ub294 \uc7ac\uc2dc\ub3c4 \ub85c\uc9c1\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/li>\n<\/ul>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uccad\ucde8\uc790\ub294 \uc5ec\uae30\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4: https:\/\/github.com\/puhhma\/cb_eventing_retry_sample<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\ub9ac\uc2a4\ub108 \uac00\uc838\uc624\uae30(<\/span><i><span style=\"font-weight: 400\">json<\/span><\/i><span style=\"font-weight: 400\"> \ud30c\uc77c)\uc744 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc774\ubca4\ud2b8 \uc11c\ube44\uc2a4\uc5d0 \ucd94\uac00\ud569\ub2c8\ub2e4.<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400\">\ub9ac\uc2a4\ub108\uac00 \uc791\ub3d9\ud558\ub824\uba74 \uc774 \ubb38\uc11c\uc5d0 \uc0ac\uc6a9\ub41c \uba85\uba85 \uaddc\uce59\uc744 \ub530\ub77c\uc57c \ud569\ub2c8\ub2e4.\u00a0<\/span><\/p>\n<p><b>\uac80\ud1a0 <\/b><b><i>EVT_SEND_CONFIRM_EMAIL<\/i><\/b><b> \ub9ac\uc2a4\ub108<\/b><\/p>\n<p><span style=\"font-weight: 400\">\uc774\ubca4\ud2b8 \ub9ac\uc2a4\ub108 \uad6c\uc131:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-12465 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/11\/function-1-602x1024.png\" alt=\"\" width=\"602\" height=\"1024\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/function-1-602x1024.png 602w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/function-1-176x300.png 176w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/function-1-768x1307.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/function-1-902x1536.png 902w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/function-1-300x511.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/function-1-12x20.png 12w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/function-1.png 940w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uc774\ubca4\ud2b8 \ub9ac\uc2a4\ub108\uac00 <\/span><i><span style=\"font-weight: 400\">\uc778\ubc14\uc6b4\ub4dc<\/span><\/i><span style=\"font-weight: 400\"> \uceec\ub809\uc158\uc758 <\/span><i><span style=\"font-weight: 400\">\uc8fc\ubb38<\/span><\/i><span style=\"font-weight: 400\"> \ubc84\ud0b7.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uadf8\ub9ac\uace0 <\/span><i><span style=\"font-weight: 400\">\uba54\ud0c0\ub370\uc774\ud130<\/span><\/i><span style=\"font-weight: 400\"> \ubc84\ud0b7\uc740 \ub9ac\uc2a4\ub108 \uba54\ud0c0\ub370\uc774\ud130\ub97c \uc800\uc7a5\ud558\ub294 \ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\ubc84\ud0b7 \ubcc4\uce6d <\/span><i><span style=\"font-weight: 400\">bkt_order_inbound<\/span><\/i><span style=\"font-weight: 400\"> \uadf8\ub9ac\uace0 <\/span><i><span style=\"font-weight: 400\">bkt_order_retry<\/span><\/i><span style=\"font-weight: 400\"> \ub97c \ucc38\uc870\ud558\uc5ec \ud574\ub2f9 <\/span><i><span style=\"font-weight: 400\">\uc778\ubc14\uc6b4\ub4dc<\/span><\/i><span style=\"font-weight: 400\"> \uadf8\ub9ac\uace0 <\/span><i><span style=\"font-weight: 400\">\ub2e4\uc2dc \uc2dc\ub3c4<\/span><\/i><span style=\"font-weight: 400\"> \uceec\ub809\uc158\uc758 <\/span><i><span style=\"font-weight: 400\">\uc8fc\ubb38<\/span><\/i><span style=\"font-weight: 400\"> \ubc84\ud0b7<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uadf8\ub9ac\uace0 <\/span><i><span style=\"font-weight: 400\">curlEmail\uc11c\ube44\uc2a4\ud638\uc2a4\ud2b8<\/span><\/i><span style=\"font-weight: 400\"> \ub294 \ubaa8\uc758 \uc774\uba54\uc77c \uc11c\ube44\uc2a4\uc5d0 \ub300\ud55c URL \ubcc4\uce6d\uc744 \uc9c0\uc815\ud569\ub2c8\ub2e4. IP \uc8fc\uc18c\ub85c \uc5c5\ub370\uc774\ud2b8\ud574\uc57c \ud569\ub2c8\ub2e4.<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<pre class=\"lang:default decode:true\">\/\/ OnUpdate is invoked for all documents created\/updated in the 'inbound' bucket\r\nfunction OnUpdate(doc, meta) {\r\n\u00a0\u00a0\u00a0\u00a0\/\/ determine if document status is 'paid' &amp; confirmation email was not previously sent\r\n\u00a0\u00a0\u00a0\u00a0if( doc.paymentStatus === \"paid\" &amp;&amp; !doc.confirmationEmailSent ) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0SendConfirmationMail(doc, meta.id);\r\n\u00a0\u00a0\u00a0\u00a0} else {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (debug_level &gt; 1)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0log(\"Nothing to do for: \" + meta.id);\r\n\u00a0\u00a0\u00a0\u00a0}\r\n}\r\n\r\nfunction SendConfirmationMail(doc, docId) {\r\n\u00a0\u00a0try {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ build the request to the EmailService\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var request = {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0path: 'sendConfirmation',\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0body: doc\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0};\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0 perform the cURL request using the URL alias 'curlEmailServiceHost' from the settings\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var response = curl('POST', curlEmailServiceHost, request);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (response.status != 200) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ this did not work as expected\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (debug_level &gt; 1) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0log(\"docId\", docId, \"cURL POST failed response.status:\",response.status);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ create retry document referencing the documentId and store in 'retry' bucket\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0bkt_order_retry[docId] = {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"docId\": docId,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"attempt\": 1,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"ts\": Date.now()\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (debug_level &gt; 5) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0log(\"cURL POST success, sent\",docId,\"response.body:\",response.body);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ update confirmationEmailSent status\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0doc.confirmationEmailSent = true;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0bkt_order_inbound[docId] = doc;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0} catch (e) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0log(\"ERROR cURL request had an exception:\",e)\r\n\u00a0\u00a0}\r\n}<\/pre>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \uc778\ub77c\uc778 \ub313\uae00\uc744 \ucc38\uc870\ud558\uc138\uc694.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uadf8\ub9ac\uace0 <\/span><i><span style=\"font-weight: 400\">\uc628\uc5c5\ub370\uc774\ud2b8 <\/span><\/i><span style=\"font-weight: 400\">\ud568\uc218\ub294 \uc8fc\ubb38 \ubb38\uc11c\uac00 \uc5c5\ub370\uc774\ud2b8\ub418\uac70\ub098 \uc0dd\uc131\ub418\uba74 \ud2b8\ub9ac\uac70\ub429\ub2c8\ub2e4.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uc694\uccad\uc774 \uad6c\uc131\ub418\uace0 cURL\uc744 \uc0ac\uc6a9\ud558\uc5ec HTTP POST \uc694\uccad\uc774 \uc774\uba54\uc77c \uc11c\ube44\uc2a4\ub85c \uc804\uc1a1\ub429\ub2c8\ub2e4.<\/span><\/li>\n<li style=\"font-weight: 400\">\uacb0\uacfc\uac00 \ud3c9\uac00\ub429\ub2c8\ub2e4. HTTP \uc751\ub2f5\uc774 \uc131\uacf5\ud558\uc9c0 \ubabb\ud55c \uacbd\uc6b0 \uc7ac\uc2dc\ub3c4 \ubb38\uc11c\uac00 \uc791\uc131\ub418\uc5b4 \uc7ac\uc2dc\ub3c4 \ubb38\uc11c\uc5d0 \ucd94\uac00\ub429\ub2c8\ub2e4. <i>\ub2e4\uc2dc \uc2dc\ub3c4<\/i> \uceec\ub809\uc158.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-12464 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/11\/function-564x1024.png\" alt=\"\" width=\"564\" height=\"1024\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/function-564x1024.png 564w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/function-165x300.png 165w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/function-768x1393.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/function-847x1536.png 847w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/function-300x544.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/function-11x20.png 11w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/function.png 882w\" sizes=\"auto, (max-width: 564px) 100vw, 564px\" \/><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uc774\ubca4\ud2b8 \ub9ac\uc2a4\ub108\uac00 <\/span><i><span style=\"font-weight: 400\">\ub2e4\uc2dc \uc2dc\ub3c4<\/span><\/i><span style=\"font-weight: 400\"> \uceec\ub809\uc158\uc758 <\/span><i><span style=\"font-weight: 400\">\uc8fc\ubb38<\/span><\/i><span style=\"font-weight: 400\"> \ubc84\ud0b7.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uadf8\ub9ac\uace0 <\/span><i><span style=\"font-weight: 400\">\uba54\ud0c0\ub370\uc774\ud130<\/span><\/i><span style=\"font-weight: 400\"> \ubc84\ud0b7\uc740 \ub9ac\uc2a4\ub108 \uba54\ud0c0\ub370\uc774\ud130\ub97c \uc800\uc7a5\ud558\ub294 \ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\ubc84\ud0b7 \ubcc4\uce6d <\/span><i><span style=\"font-weight: 400\">bkt_order_inbound<\/span><\/i><span style=\"font-weight: 400\"> \uadf8\ub9ac\uace0 <\/span><i><span style=\"font-weight: 400\">bkt_order_retry<\/span><\/i><span style=\"font-weight: 400\"> \ub97c \ucc38\uc870\ud558\uc5ec \ud574\ub2f9 <\/span><i><span style=\"font-weight: 400\">\uc778\ubc14\uc6b4\ub4dc<\/span><\/i><span style=\"font-weight: 400\"> \uadf8\ub9ac\uace0 <\/span><i><span style=\"font-weight: 400\">\ub2e4\uc2dc \uc2dc\ub3c4<\/span><\/i><span style=\"font-weight: 400\"> \uc8fc\ubb38 \ubc84\ud0b7\uc758 \uceec\ub809\uc158<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uadf8\ub9ac\uace0 <\/span><i><span style=\"font-weight: 400\">curlEmail\uc11c\ube44\uc2a4\ud638\uc2a4\ud2b8<\/span><\/i><span style=\"font-weight: 400\"> \ubaa8\uc758 \uc774\uba54\uc77c \uc11c\ube44\uc2a4\uc5d0 \ub300\ud55c URL \ubcc4\uce6d\uc744 \uc9c0\uc815\ud569\ub2c8\ub2e4.<\/span><\/li>\n<li style=\"font-weight: 400\">\uadf8\ub9ac\uace0 <i>\uc7ac\uc2dc\ub3c4 \ud0c0\uc774\uba38 \uac04\uaca9<\/i> \ub294 \ud0c0\uc774\uba38 \uac04\uaca9\uc744 \ucd08 \ub2e8\uc704\ub85c \uc9c0\uc815\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<pre class=\"lang:default decode:true\">function OnUpdate(doc, meta) {\r\n\u00a0\u00a0\u00a0\u00a0if (meta.id === \"allow_retrys\") {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ the timer is initialized by creating document with id = 'allow_retrys'\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CreateRetryTimer({\"id\": meta.id, \"mode\": \"initial\"});\r\n\u00a0\u00a0\u00a0\u00a0} else if (doc.fireRetry) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ process retry documents\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0SendConfirmationMail(doc, meta.id);\r\n\u00a0\u00a0\u00a0\u00a0}\r\n}\r\n\r\nfunction CreateRetryTimer(context) {\r\n\u00a0\u00a0\u00a0\u00a0if (debug_level &gt; 2) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0log('From CreateRetryTimer: creating timer', context.mode, context.id);\r\n\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\/\/ Create a timestamp 'retryTimerInterval' seconds (from the settings) from now\r\n\u00a0\u00a0\u00a0\u00a0var timerStartTime = new Date();\r\n\u00a0\u00a0\u00a0\u00a0\/\/ Get current time &amp; add 'retryTimerInterval' sec. to it.\r\n\u00a0\u00a0\u00a0\u00a0timerStartTime.setSeconds(timerStartTime.getSeconds() + retryTimerInterval);\r\n\u00a0\u00a0\u00a0\u00a0\/\/ Create a document to use as out for our context\r\n\u00a0\u00a0\u00a0\u00a0createTimer(RetryTimerCallback, timerStartTime, context.id, context);\r\n}\r\n\r\nfunction RetryTimerCallback(context) {\r\n\u00a0\u00a0\u00a0\u00a0if (debug_level &gt; 2) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0log('From RetryTimerCallback: timer fired', context);\r\n\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\/\/ rearm the timer ASAP, to ensure timer keeps running in the event\r\n\u00a0\u00a0\u00a0\u00a0\/\/ of later\u00a0 errors or script timeouts in later \"recurring work\".\r\n\u00a0\u00a0\u00a0\u00a0CreateRetryTimer({ \"id\": context.id, \"mode\": \"via_callback\" });\r\n\u00a0\u00a0\u00a0\u00a0\/\/ Update all retry documents in the 'retry' bucket. Exclude the 'allow_retys' document\r\n\u00a0\u00a0\u00a0\u00a0\/\/ and any documents that were created more than 15 seconds ago, in order to avoid retry 'to early'.\r\n\u00a0\u00a0\u00a0\u00a0N1QL(\"UPDATE orders._default.retry SET fireRetry = true WHERE meta().id != 'allow_retrys' AND ts &lt; DATE_ADD_MILLIS(NOW_MILLIS(), -15, 'second')\");\r\n}\r\n\r\nfunction SendConfirmationMail(retryDoc, docId) {\r\n\u00a0\u00a0try {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ resolve order document by id\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var doc = bkt_order_inbound[docId];\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ build the request\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var request = {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0path: 'sendConfirmation',\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0body: doc\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0};\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u00a0 perform the cURL request using the URL alias from the settings\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var response = curl('POST', curlEmailServiceHost, request);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (response.status != 200) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ this did not work as expected\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (debug_level &gt; 1) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0log(\"docId\", docId, \"cURL POST failed response.status:\",response.status);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ increment attempt count in retry document\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0retryDoc.attempt = ++retryDoc.attempt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Set fireRetry = false, to avoid retry execution with this document change\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0retryDoc.fireRetry = false;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0retryDoc.ts = Date.now();\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ update retry document\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0bkt_order_retry[docId] = retryDoc;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (debug_level &gt; 5) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0log(\"cURL POST success, sent\",docId,\"response.body:\",response.body);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0doc.confirmationEmailSent = true;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0bkt_order_inbound[docId] = doc;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ delete the retry document\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0delete bkt_order_retry[docId];\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\u00a0 } catch (e) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0log(\"ERROR cURL request had an exception:\",e)\r\n\u00a0\u00a0}\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\ud0c0\uc774\uba38\ub294 ID\uac00 \ub2e4\uc74c\uacfc \uac19\uc740 \ubb38\uc11c\ub97c \ucd94\uac00\ud558\uc5ec \uc2dc\uc791\ub429\ub2c8\ub2e4. <\/span><b>\ud5c8\uc6a9_\uc7ac\uc2dc\ub3c4<\/b><span style=\"font-weight: 400\"> \ub97c <\/span><i><span style=\"font-weight: 400\">\ub2e4\uc2dc \uc2dc\ub3c4<\/span><\/i><span style=\"font-weight: 400\"> \uceec\ub809\uc158<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uadf8\ub7f0 \ub2e4\uc74c \ud0c0\uc774\uba38\uac00 \ucd08\uae30\ud654\ub418\uace0 \ud0c0\uc774\uba38\uc640 \uc5f0\uacb0\ub41c RetryTimerCallback \ud568\uc218\uac00 \ud638\ucd9c\ub429\ub2c8\ub2e4.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\ud0c0\uc774\uba38\uac00 \uc2e4\ud589\ub418\uba74 RetryTimerCallback \ud568\uc218\uac00 \ud638\ucd9c\ub429\ub2c8\ub2e4.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uc7ac\uc2dc\ub3c4 \uba54\ucee4\ub2c8\uc998\uc744 \uc9c4\ud589\ud558\uae30 \uc804\uc5d0 \uccab \ubc88\uc9f8 \ub2e8\uacc4\ub85c \uc0c8 \ud0c0\uc774\uba38\uac00 \uc0dd\uc131\ub418\uc5b4 \ub098\uc911\uc5d0 \uc624\ub958\uac00 \ubc1c\uc0dd\ud560 \uacbd\uc6b0 \uacc4\uc18d \uc2e4\ud589\ub418\ub3c4\ub85d \ud569\ub2c8\ub2e4.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">N1QL \ucffc\ub9ac\ub294 \ubaa8\ub4e0 \uc5c5\ub370\uc774\ud2b8\uc5d0 \uc0ac\uc6a9\ub429\ub2c8\ub2e4. <\/span><i><span style=\"font-weight: 400\">\ub2e4\uc2dc \uc2dc\ub3c4<\/span><\/i><span style=\"font-weight: 400\"> \ubb38\uc11c\uc5d0 \uc788\ub294 <\/span><i><span style=\"font-weight: 400\">\ub2e4\uc2dc \uc2dc\ub3c4<\/span><\/i><span style=\"font-weight: 400\"> \uceec\ub809\uc158\uc744 \ucd94\uac00\ud558\uc5ec <\/span><i><span style=\"font-weight: 400\">fireRetry<\/span><\/i><span style=\"font-weight: 400\"> \uc18d\uc131\uc744 \ubb38\uc11c\uc5d0 \ucd94\uac00\ud569\ub2c8\ub2e4.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\ubb38\uc11c\uac00 \ubcc0\uacbd\ub420 \ub54c\ub9c8\ub2e4 \ubb38\uc11c \uc5c5\ub370\uc774\ud2b8 \uc774\ubca4\ud2b8\uac00 \ubc1c\uc0dd\ud558\uace0 \uc7ac\uc2dc\ub3c4 \uba54\ucee4\ub2c8\uc998\uc774 \uc2e4\ud589\ub429\ub2c8\ub2e4.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uc8fc\ubb38 \ubb38\uc11c\ub294 <\/span><i><span style=\"font-weight: 400\">\uc778\ubc14\uc6b4\ub4dc<\/span><\/i><span style=\"font-weight: 400\"> \uceec\ub809\uc158\uc744 \uc218\uc9d1\ud558\uace0 \uc774\uba54\uc77c \uc11c\ube44\uc2a4\ub294 cURL\uc744 \ud1b5\ud574 \ud638\ucd9c\ub429\ub2c8\ub2e4.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uc2e4\ud328 \uc2dc <\/span><i><span style=\"font-weight: 400\">\ub2e4\uc2dc \uc2dc\ub3c4<\/span><\/i><span style=\"font-weight: 400\"> \ubb38\uc11c\uac00 \uc5c5\ub370\uc774\ud2b8\ub418\uace0 <\/span><i><span style=\"font-weight: 400\">\uc2dc\ub3c4<\/span><\/i><span style=\"font-weight: 400\"> \uce74\uc6b4\ud130 \uc99d\uac00<\/span><\/li>\n<\/ul>\n<p><b>\uc0d8\ud50c \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ud14c\uc2a4\ud2b8<\/b><\/p>\n<p><span style=\"font-weight: 400\">\uc774\uc81c \ub9c8\uc9c0\ub9c9\uc73c\ub85c \uc0d8\ud50c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ud14c\uc2a4\ud2b8\ud560 \ucc28\ub840\uc785\ub2c8\ub2e4:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\ubaa8\uc758 \uc774\uba54\uc77c \uc11c\ube44\uc2a4\uac00 \uc2e4\ud589 \uc911\uc778\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uc2dc\uc791\ud558\uae30 <\/span><b><i>EVT_SEND_CONFIRM_EMAIL <\/i><\/b><span style=\"font-weight: 400\">\uc774\ubca4\ud2b8 \ub9ac\uc2a4\ub108\ub97c \uc0ac\uc6a9\ud558\ub418 <\/span><b><i>EVT_SEND_\ud655\uc778_\uc774\uba54\uc77c_\uc7ac\uc2dc\ub3c4 <\/i><\/b><span style=\"font-weight: 400\">\ub9ac\uc2a4\ub108\uac00 \ud604\uc7ac \uc911\uc9c0\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Couchbase \ucf58\uc194\uc5d0\uc11c \uc0d8\ud50c \uc8fc\ubb38 \ubb38\uc11c\ub97c \ub9cc\ub4ed\ub2c8\ub2e4(\uc704\uc758 \ub370\uc774\ud130 \ubaa8\ub378 \ucc38\uc870).<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uc131\uacf5 \uc751\ub2f5\uc758 \uacbd\uc6b0 <\/span><span style=\"font-weight: 400\">\ud655\uc778\uc774\uba54\uc77c \uc804\uc1a1 <\/span><span style=\"font-weight: 400\">\uc18d\uc131\uc774 \ucc38\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8\ub429\ub2c8\ub2e4. <\/span><i><span style=\"font-weight: 400\">\uc8fc\ubb38<\/span><\/i><span style=\"font-weight: 400\"> \ubb38\uc11c.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uc2e4\ud328\ud560 \uacbd\uc6b0 \uc7ac\uc2dc\ub3c4 \ubb38\uc11c\ub294 <\/span><i><span style=\"font-weight: 400\">\ub2e4\uc2dc \uc2dc\ub3c4<\/span><\/i><span style=\"font-weight: 400\"> \uc218\uc9d1. \uc774\uba54\uc77c \uc11c\ube44\uc2a4\uc5d0\uc11c \ubb34\uc791\uc704\ub85c \uc624\ub958\ub97c \ud68c\uc2e0\ud558\ubbc0\ub85c \uc624\ub958\uac00 \ubc1c\uc0dd\ud560 \ub54c\uae4c\uc9c0 #3 \ub2e8\uacc4\ub97c \ubc18\ubcf5\ud558\uc138\uc694.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uc774\uc81c \uc624\ub958\ub97c \ucea1\ucc98\ud588\uc73c\ub2c8 \uc7ac\uc2dc\ub3c4 \uc774\ubca4\ud2b8 \ub9ac\uc2a4\ub108\ub97c \uc2dc\uc791\ud558\uaca0\uc2b5\ub2c8\ub2e4. <\/span><b><i>EVT_SEND_\ud655\uc778_\uc774\uba54\uc77c_\uc7ac\uc2dc\ub3c4<\/i><\/b><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uc544\uc774\ub514\uac00 'allow_retries'\uc778 \ubb38\uc11c\ub97c \ub9cc\ub4ed\ub2c8\ub2e4. \uc774\ub807\uac8c \ud558\uba74 \uc7ac\uc2dc\ub3c4 \uba54\ucee4\ub2c8\uc998\uc774 \ucd08\uae30\ud654\ub429\ub2c8\ub2e4.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uc7a0\uc2dc \ud6c4 \ub9ac\uc2a4\ub108\uac00 \ud65c\uc131\ud654\ub418\uace0 \ubb38\uc11c \ucc98\ub9ac\uac00 \uc2dc\uc791\ub429\ub2c8\ub2e4. <\/span><i><span style=\"font-weight: 400\">\ub2e4\uc2dc \uc2dc\ub3c4<\/span><\/i><span style=\"font-weight: 400\"> \uceec\ub809\uc158.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\uc774\uba54\uc77c \uc11c\ube44\uc2a4 \uc5c5\ub370\uc774\ud2b8\uc5d0 \uc2e4\ud328\ud560 \ub54c\ub9c8\ub2e4 '\uc2dc\ub3c4' \uc18d\uc131\uc774 \uc99d\uac00\ud55c\ub2e4\ub294 \uc810\uc744 \uc720\uc758\ud558\uc138\uc694. \uc131\uacf5\ud560 \uacbd\uc6b0 \uc8fc\ubb38 \ubb38\uc11c\uac00 \uc5c5\ub370\uc774\ud2b8\ub418\uace0 \uadf8\uc5d0 \ud574\ub2f9\ud558\ub294 <\/span><i><span style=\"font-weight: 400\">\ub2e4\uc2dc \uc2dc\ub3c4<\/span><\/i><span style=\"font-weight: 400\"> \ubb38\uc11c\uc5d0\uc11c \uc81c\uac70\ub41c <\/span><i><span style=\"font-weight: 400\">\ub2e4\uc2dc \uc2dc\ub3c4<\/span><\/i><span style=\"font-weight: 400\"> \uceec\ub809\uc158.<\/span><\/li>\n<\/ol>\n<p><span style=\"font-weight: 400\">\uc774\uba54\uc77c \uc11c\ube44\uc2a4 \ubaa8\uc758 \ud14c\uc2a4\ud2b8\uc758 \uc751\ub2f5\uc740 \ubb34\uc791\uc704\uc774\ubbc0\ub85c \uc608\uc0c1\ub418\ub294 \ub3d9\uc791\uc744 \uad00\ucc30\ud558\uae30 \uc704\ud574 \uc704\uc758 \ub2e8\uacc4\ub97c \ubc18\ubcf5\ud574\uc57c \ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<p><b>\uacb0\ub860<\/b><\/p>\n<p><span style=\"font-weight: 400\">\uc774 \uae00\uc5d0\uc11c\ub294 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc774\ubca4\ud2b8\uc640 \uc678\ubd80 REST \uc11c\ube44\uc2a4\ub97c \ud1b5\ud569\ud560 \ub54c \uc624\ub958 \uc870\uac74\uc744 \ucc98\ub9ac\ud558\ub294 \uc7ac\uc2dc\ub3c4 \uba54\ucee4\ub2c8\uc998\uc5d0 \ub300\ud574 \uac04\ub7b5\ud558\uac8c \uc124\uba85\ud569\ub2c8\ub2e4. \uc774 \uc194\ub8e8\uc158 \ub610\ub294 \uc774\uc640 \uc720\uc0ac\ud55c \uc194\ub8e8\uc158\uc744 \uc0ac\uc6a9\ud558\uba74 \uc678\ubd80 \uc11c\ube44\uc2a4\uac00 \uc77c\uc2dc\uc801\uc73c\ub85c \uc624\uc791\ub3d9\ud558\ub294 \uacbd\uc6b0\uc5d0\ub3c4 \uc608\uc0c1\ub41c \uc791\uc5c5\uc774 \uc218\ud589\ub418\ub3c4\ub85d \ubcf4\uc7a5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">\uc7ac\uc2dc\ub3c4 \uba54\ucee4\ub2c8\uc998\uc744 \uace0\ub824\ud560 \ub54c\ub294 \uc7ac\uc2dc\ub3c4 \ud69f\uc218, Couchbase Eventing\uc5d0 \uc0ac\uc6a9 \uac00\ub2a5\ud55c \uc6cc\ucee4 \uc2a4\ub808\ub4dc \ubc0f \uc678\ubd80 \uc11c\ube44\uc2a4\uc5d0\uc11c \ucc98\ub9ac\ud560 \uc218 \uc788\ub294 \uc694\uccad \ub4f1 \ub2e4\uc591\ud55c \uc694\uc18c\ub97c \uace0\ub824\ud574\uc57c \ud569\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc774\ubca4\ud2b8\uc758 \ub0b4\ubd80\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \uc5ec\uae30\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4: <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/eventing\/eventing-overview.html\"><span style=\"font-weight: 400\">https:\/\/docs.couchbase.com\/server\/current\/eventing\/eventing-overview.html<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400\">\uc774 \uae00\uc5d0 \ub300\ud55c \uae30\uc220\uc801 \uc778\uc0ac\uc774\ud2b8\uc640 \uc9c0\uc6d0\uc744 \uc81c\uacf5\ud574 \uc8fc\uc2e0 \uc874 \uc2a4\ud2b8\ub77c\ubc1c\ub77c(Couchbase\uc758 \uc218\uc11d \uc81c\ud488 \uad00\ub9ac\uc790)\uc5d0\uac8c \uac10\uc0ac\ub4dc\ub9bd\ub2c8\ub2e4.<\/span><\/p>","protected":false},"excerpt":{"rendered":"<p>The Couchbase Eventing Service allows you to promptly act on mutations (or changes) to your data. All actions in Eventing are accomplished by executing a lambda, a small piece of business logic written in JavaScript. Common use cases include data [&hellip;]<\/p>","protected":false},"author":77950,"featured_media":12473,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[2273],"tags":[],"ppma_author":[9323],"class_list":["post-12471","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-eventing"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Couchbase Eventing Handling Errors and Retries w\/ Examples<\/title>\n<meta name=\"description\" content=\"This post will outline how errors during the event listener execution can be handled. By using a retry mechanism ensure the anticipated action is performed.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-eventing-handling-errors-and-retries\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Couchbase Eventing Handling Errors and Retries\" \/>\n<meta property=\"og:description\" content=\"This post will outline how errors during the event listener execution can be handled. By using a retry mechanism ensure the anticipated action is performed.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-eventing-handling-errors-and-retries\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-11-15T18:34:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T05:39:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/thisisengineering-raeng-64YrPKiguAE-unsplash-1024x683.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"683\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Marian Puhl, Solutions Engineer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marian Puhl, Solutions Engineer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-eventing-handling-errors-and-retries\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-eventing-handling-errors-and-retries\/\"},\"author\":{\"name\":\"Marian Puhl, Solutions Engineer\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b2fc479528e2819b50082a425cf381e3\"},\"headline\":\"Couchbase Eventing Handling Errors and Retries\",\"datePublished\":\"2021-11-15T18:34:56+00:00\",\"dateModified\":\"2025-06-14T05:39:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-eventing-handling-errors-and-retries\/\"},\"wordCount\":1751,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-eventing-handling-errors-and-retries\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/thisisengineering-raeng-64YrPKiguAE-unsplash.jpg\",\"articleSection\":[\"Eventing\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-eventing-handling-errors-and-retries\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-eventing-handling-errors-and-retries\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/couchbase-eventing-handling-errors-and-retries\/\",\"name\":\"Couchbase Eventing Handling Errors and Retries w\/ Examples\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-eventing-handling-errors-and-retries\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-eventing-handling-errors-and-retries\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/thisisengineering-raeng-64YrPKiguAE-unsplash.jpg\",\"datePublished\":\"2021-11-15T18:34:56+00:00\",\"dateModified\":\"2025-06-14T05:39:19+00:00\",\"description\":\"This post will outline how errors during the event listener execution can be handled. By using a retry mechanism ensure the anticipated action is performed.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-eventing-handling-errors-and-retries\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-eventing-handling-errors-and-retries\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-eventing-handling-errors-and-retries\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/thisisengineering-raeng-64YrPKiguAE-unsplash.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/thisisengineering-raeng-64YrPKiguAE-unsplash.jpg\",\"width\":7952,\"height\":5304,\"caption\":\"Creating JavaScript UDFs to traverse hierarchy in Couchbase SQL++\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-eventing-handling-errors-and-retries\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Couchbase Eventing Handling Errors and Retries\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b2fc479528e2819b50082a425cf381e3\",\"name\":\"Marian Puhl, Solutions Engineer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/1f65549252c18bb3651eaa3a78e46169\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/marian-puhl-couchbase-engineering.jpeg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/marian-puhl-couchbase-engineering.jpeg\",\"caption\":\"Marian Puhl, Solutions Engineer\"},\"description\":\"Marian Puhl is a Solutions Engineer at Couchbase in the Nordic region.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/ko\/author\/marian-puhl\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Couchbase Eventing Handling Errors and Retries w\/ Examples","description":"This post will outline how errors during the event listener execution can be handled. By using a retry mechanism ensure the anticipated action is performed.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-eventing-handling-errors-and-retries\/","og_locale":"ko_KR","og_type":"article","og_title":"Couchbase Eventing Handling Errors and Retries","og_description":"This post will outline how errors during the event listener execution can be handled. By using a retry mechanism ensure the anticipated action is performed.","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-eventing-handling-errors-and-retries\/","og_site_name":"The Couchbase Blog","article_published_time":"2021-11-15T18:34:56+00:00","article_modified_time":"2025-06-14T05:39:19+00:00","og_image":[{"width":1024,"height":683,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/thisisengineering-raeng-64YrPKiguAE-unsplash-1024x683.jpg","type":"image\/jpeg"}],"author":"Marian Puhl, Solutions Engineer","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Marian Puhl, Solutions Engineer","Est. reading time":"9\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-eventing-handling-errors-and-retries\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-eventing-handling-errors-and-retries\/"},"author":{"name":"Marian Puhl, Solutions Engineer","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b2fc479528e2819b50082a425cf381e3"},"headline":"Couchbase Eventing Handling Errors and Retries","datePublished":"2021-11-15T18:34:56+00:00","dateModified":"2025-06-14T05:39:19+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-eventing-handling-errors-and-retries\/"},"wordCount":1751,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-eventing-handling-errors-and-retries\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/thisisengineering-raeng-64YrPKiguAE-unsplash.jpg","articleSection":["Eventing"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/couchbase-eventing-handling-errors-and-retries\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-eventing-handling-errors-and-retries\/","url":"https:\/\/www.couchbase.com\/blog\/couchbase-eventing-handling-errors-and-retries\/","name":"Couchbase Eventing Handling Errors and Retries w\/ Examples","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-eventing-handling-errors-and-retries\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-eventing-handling-errors-and-retries\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/thisisengineering-raeng-64YrPKiguAE-unsplash.jpg","datePublished":"2021-11-15T18:34:56+00:00","dateModified":"2025-06-14T05:39:19+00:00","description":"This post will outline how errors during the event listener execution can be handled. By using a retry mechanism ensure the anticipated action is performed.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-eventing-handling-errors-and-retries\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-eventing-handling-errors-and-retries\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-eventing-handling-errors-and-retries\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/thisisengineering-raeng-64YrPKiguAE-unsplash.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/11\/thisisengineering-raeng-64YrPKiguAE-unsplash.jpg","width":7952,"height":5304,"caption":"Creating JavaScript UDFs to traverse hierarchy in Couchbase SQL++"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-eventing-handling-errors-and-retries\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Couchbase Eventing Handling Errors and Retries"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","description":"NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4, Couchbase","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/b2fc479528e2819b50082a425cf381e3","name":"\ub9c8\ub9ac\uc548 \ud480, \uc194\ub8e8\uc158 \uc5d4\uc9c0\ub2c8\uc5b4","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/1f65549252c18bb3651eaa3a78e46169","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/marian-puhl-couchbase-engineering.jpeg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/marian-puhl-couchbase-engineering.jpeg","caption":"Marian Puhl, Solutions Engineer"},"description":"Marian Puhl\uc740 \ubd81\uc720\ub7fd \uc9c0\uc5ed Couchbase\uc758 \uc194\ub8e8\uc158 \uc5d4\uc9c0\ub2c8\uc5b4\uc785\ub2c8\ub2e4.","url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/marian-puhl\/"}]}},"authors":[{"term_id":9323,"user_id":77950,"is_guest":0,"slug":"marian-puhl","display_name":"Marian Puhl, Solutions Engineer","avatar_url":{"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/marian-puhl-couchbase-engineering.jpeg","url2x":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/marian-puhl-couchbase-engineering.jpeg"},"author_category":"","last_name":"Puhl","first_name":"Marian","job_title":"","user_url":"","description":"Marian Puhl\uc740 \ubd81\uc720\ub7fd \uc9c0\uc5ed Couchbase\uc758 \uc194\ub8e8\uc158 \uc5d4\uc9c0\ub2c8\uc5b4\uc785\ub2c8\ub2e4."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/12471","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/users\/77950"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=12471"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/12471\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/12473"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=12471"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=12471"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=12471"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=12471"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}