{"id":7045,"date":"2019-08-09T10:00:40","date_gmt":"2019-08-09T17:00:40","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=7045"},"modified":"2025-06-13T22:40:26","modified_gmt":"2025-06-14T05:40:26","slug":"eventing-service-improvements-in-couchbase-server-6-5","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/eventing-service-improvements-in-couchbase-server-6-5\/","title":{"rendered":"Aprimoramentos do servi\u00e7o de eventos no Couchbase Server 6.5"},"content":{"rendered":"<p><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/products\/eventing\/\">Servi\u00e7o de eventos do Couchbase<\/a> fornece uma estrutura para escrever suas pr\u00f3prias fun\u00e7\u00f5es para processar eventos de altera\u00e7\u00e3o de dados (cria\u00e7\u00e3o, atualiza\u00e7\u00e3o, exclus\u00e3o\/expira\u00e7\u00e3o). O Couchbase Server 6.5 apresenta um conjunto de aprimoramentos importantes no Eventing Service que permitem muitos casos de uso novos e simplificam a manuten\u00e7\u00e3o do Evening Functions.<\/p>\n<h2>Muta\u00e7\u00f5es do Bucket de Origem<\/h2>\n<p>Uma fun\u00e7\u00e3o Eventing \u00e9 definida para ouvir as altera\u00e7\u00f5es de um bucket, conhecido como o bucket de origem da fun\u00e7\u00e3o. As vers\u00f5es anteriores do Couchbase n\u00e3o permitiam que uma fun\u00e7\u00e3o alterasse os documentos em seu bucket de origem, porque se essas muta\u00e7\u00f5es estiverem sendo alimentadas de volta para a fun\u00e7\u00e3o, isso poder\u00e1 criar uma recurs\u00e3o infinita. Essa limita\u00e7\u00e3o foi removida no Couchbase 6.5: uma fun\u00e7\u00e3o Eventing agora pode alterar os documentos no bucket de origem, at\u00e9 mesmo o documento do evento de altera\u00e7\u00e3o. O Couchbase torna essas altera\u00e7\u00f5es seguras, suprimindo a propaga\u00e7\u00e3o recursiva para a mesma fun\u00e7\u00e3o Eventing.<\/p>\n<p>A possibilidade de alterar documentos no bucket de origem abre muitos casos de uso interessantes: enriquecer os documentos alterados com novos atributos, realizar atualiza\u00e7\u00f5es em cascata ou exclus\u00f5es de documentos dependentes, gerar novos documentos no mesmo bucket.<\/p>\n<p>O exemplo abaixo usa Eventing para gerar automaticamente atributos de documento que cont\u00eam a hora de cria\u00e7\u00e3o do documento e a hora de sua \u00faltima atualiza\u00e7\u00e3o. Vamos ouvir as altera\u00e7\u00f5es no atributo <strong>amostra de viagem<\/strong> e geram ou atualizam os atributos de tempo sempre que um documento \u00e9 alterado. As fun\u00e7\u00f5es de eventos acessam os compartimentos por meio dos chamados bucket bindings. Criamos uma vincula\u00e7\u00e3o de bucket de leitura e grava\u00e7\u00e3o no <strong>amostra de viagem<\/strong> ou seja, o bucket de origem, e dar a ele um alias <strong>balde<\/strong>:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-7046 size-medium_large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/06\/Eventing-UpdateTime-768x756.png\" alt=\"\" width=\"768\" height=\"756\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-UpdateTime-768x756.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-UpdateTime-300x295.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-UpdateTime-1024x1008.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-UpdateTime-65x65.png 65w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-UpdateTime-50x50.png 50w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-UpdateTime-20x20.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-UpdateTime.png 1276w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/p>\n<p>Na pr\u00f3xima etapa, forne\u00e7a o c\u00f3digo da fun\u00e7\u00e3o:<\/p>\n<pre class=\"toolbar-delay:false lang:js decode:true\">fun\u00e7\u00e3o OnUpdate(doc, meta) {\r\n    log('docId', meta.id);\r\n    var time = Date.now();\r\n    doc[\"updated\"] = time;\r\n    se (!(\"created\" in doc)) {\r\n        doc[\"created\"] = time;\r\n    }\r\n    log('newDoc', meta, doc);\r\n    bucket[meta.id] = doc;\r\n}\r\n<\/pre>\n<p>No <strong>Sobre a atualiza\u00e7\u00e3o<\/strong> que \u00e9 chamado em cada evento de inser\u00e7\u00e3o e atualiza\u00e7\u00e3o, gravamos a hora atual no <strong>atualizado<\/strong> (criando ou substituindo-o). Se o documento ainda n\u00e3o contiver <strong>criado<\/strong> presumimos que essa \u00e9 a primeira altera\u00e7\u00e3o no documento, portanto, adicionamos <strong>criado<\/strong> contendo tamb\u00e9m a hora atual. Depois de estendermos o documento com os novos atributos, n\u00f3s o gravamos de volta no bucket de origem com o mesmo ID de documento.<\/p>\n<p>Ao mudar <strong>atualizado<\/strong> e <strong>criado<\/strong> geramos novas altera\u00e7\u00f5es no documento. A estrutura Eventing suprime a recurs\u00e3o ao n\u00e3o propagar essas altera\u00e7\u00f5es para nossa fun\u00e7\u00e3o. Caso contr\u00e1rio, essas altera\u00e7\u00f5es s\u00e3o tratadas de maneira normal: elas s\u00e3o replicadas, indexadas e at\u00e9 propagadas para outras fun\u00e7\u00f5es de Eventing.<\/p>\n<h2>Invoca\u00e7\u00e3o de fun\u00e7\u00f5es externas com o cURL<\/h2>\n<p>As fun\u00e7\u00f5es de eventos podem interagir com sistemas externos usando <b>enrolar<\/b> para chamar sua API REST. A possibilidade de interagir com sistemas externos abre uma s\u00e9rie de novos casos de uso, como a propaga\u00e7\u00e3o de altera\u00e7\u00f5es de dados para outros sistemas, notificando o aplicativo sobre eventos interessantes, enriquecendo documentos com dados de sistemas externos e assim por diante. Uma pr\u00e9via da fun\u00e7\u00e3o curl j\u00e1 estava dispon\u00edvel em vers\u00f5es anteriores do Couchbase, mas com a vers\u00e3o 6.5 o recurso foi reprojetado para torn\u00e1-lo confi\u00e1vel e seguro: as chamadas cURL s\u00e3o limitadas a um conjunto predefinido de liga\u00e7\u00f5es de URL, para cada liga\u00e7\u00e3o podemos especificar autentica\u00e7\u00e3o, criptografia e valida\u00e7\u00e3o de certificado, conforme necess\u00e1rio.<\/p>\n<p>No exemplo a seguir, definiremos um aplicativo que escuta as altera\u00e7\u00f5es no bucket de amostra de viagem. Salve o c\u00f3digo do aplicativo abaixo no arquivo <strong>app.js<\/strong>:<\/p>\n<pre class=\"lang:js decode:true\">const Express = require(\"express\");\r\nconst BasicAuth = require(\"express-basic-auth\");\r\nconst BodyParser = require(\"body-parser\");\r\n \r\nvar app = Express();\r\napp.use(BodyParser.json());\r\napp.use(BodyParser.urlencoded({ extended: true }));\r\napp.use(BasicAuth({ users: { 'couchbase': 'password' } }))\r\n \r\napp.post(\"\/api\/airline\", (request, response) =&gt; {\r\n    var id = request.body.id;\r\n    console.log(\"Companhia a\u00e9rea \" + id + \" alterada\");\r\n    response.send(\"OK\");\r\n});\r\n \r\nvar server = app.listen(3000, () =&gt; {\r\n    console.log(\"Listening...\");\r\n});<\/pre>\n<p>O aplicativo define um ponto de extremidade <strong>\/api\/companhia a\u00e9rea<\/strong> para receber notifica\u00e7\u00f5es sobre altera\u00e7\u00f5es nos dados da companhia a\u00e9rea como solicita\u00e7\u00f5es POST com o corpo contendo o ID da companhia a\u00e9rea. O aplicativo est\u00e1 configurado com autentica\u00e7\u00e3o b\u00e1sica, esperando que o usu\u00e1rio <strong>couchbase<\/strong> com a senha <strong>senha<\/strong>.<\/p>\n<p>Execute os seguintes comandos para instalar os pacotes node.js necess\u00e1rios e executar o aplicativo:<\/p>\n<pre class=\"striped:false nums:false nums-toggle:false lang:sh decode:true\">npm init -y\r\nnpm install express body-parser express-basic-auth --save\r\nnode app.js\r\n<\/pre>\n<p>Agora vamos criar uma Eventing Function que notifica nosso aplicativo sobre as altera\u00e7\u00f5es nos documentos da companhia a\u00e9rea. Todas as APIs externas que podem ser chamadas pela fun\u00e7\u00e3o devem ser declaradas como liga\u00e7\u00f5es de URL. Supondo que 192.168.61.1 seja o IP da m\u00e1quina em que iniciamos o aplicativo, declaramos uma associa\u00e7\u00e3o de URL para o URL <strong>https:\/\/192.168.61.1:3000\/api<\/strong> e nome\u00e1-lo <b>notifyApi<\/b>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-7047 size-medium_large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/06\/Eventing-NotifyChanges-768x895.png\" alt=\"\" width=\"768\" height=\"895\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-NotifyChanges-768x895.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-NotifyChanges-257x300.png 257w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-NotifyChanges-879x1024.png 879w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-NotifyChanges-300x350.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-NotifyChanges-17x20.png 17w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-NotifyChanges.png 1272w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/p>\n<p>Uma liga\u00e7\u00e3o de URL pode usar o protocolo http ou https. Tamb\u00e9m podemos especificar diferentes tipos de autentica\u00e7\u00e3o e ativar cookies para evitar a repeti\u00e7\u00e3o da autentica\u00e7\u00e3o. No nosso caso, selecionamos a autentica\u00e7\u00e3o b\u00e1sica com o usu\u00e1rio <strong>couchbase<\/strong> e senha <strong>senha<\/strong>.<\/p>\n<p>Na pr\u00f3xima etapa, forne\u00e7a o c\u00f3digo da fun\u00e7\u00e3o, que escuta as altera\u00e7\u00f5es dos documentos do tipo <strong>companhia a\u00e9rea<\/strong> e encaminha essas altera\u00e7\u00f5es para o aplicativo usando <b>enrolar<\/b> chamadas:<\/p>\n<pre class=\"lang:js decode:true\">fun\u00e7\u00e3o OnUpdate(doc, meta) {\r\n    se (doc.type == 'airline') {\r\n        var request = {\r\n            path: '\/airline',\r\n            body: { id : meta.id,\r\n                    value : doc\r\n            }\r\n        };\r\n        log('request', request);\r\n        var response = curl('POST', notifyApi, request);\r\n        se (response.status ! = 200) {\r\n            log('request failed', response);\r\n        }\r\n    }\r\n}<\/pre>\n<p>O <b>enrolar<\/b> recebe tr\u00eas par\u00e2metros: o m\u00e9todo da solicita\u00e7\u00e3o HTTP, a vincula\u00e7\u00e3o de URL e o objeto de solicita\u00e7\u00e3o que pode conter os seguintes atributos:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li><b>caminho<\/b> especifica o subcaminho da liga\u00e7\u00e3o de URL. Em nosso exemplo, anexamos <strong>\/companhia a\u00e9rea<\/strong>\u00a0para fazer uma chamada para <strong>https:\/\/192.168.61.1:3000\/api\/airline<\/strong><\/li>\n<li>o <b>corpo<\/b> da solicita\u00e7\u00e3o HTTP. O objeto fornecido ser\u00e1 codificado e transformado em uma cadeia de caracteres JSON, a menos que seja especificado de forma diferente pelo par\u00e2metro <b>codifica\u00e7\u00e3o<\/b> atributo<\/li>\n<li><b>par\u00e2metros<\/b> cont\u00e9m pares de valores-chave a serem passados como par\u00e2metros de solicita\u00e7\u00e3o HTTP<\/li>\n<li><b>cabe\u00e7alhos<\/b> cont\u00e9m pares de valores-chave a serem passados como cabe\u00e7alhos HTTP adicionais.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>O objeto de resposta retornado pelo\u00a0<b>enrolar<\/b>\u00a0cont\u00e9m o status, o corpo e os cabe\u00e7alhos da resposta HTTP. A fun\u00e7\u00e3o lan\u00e7a exce\u00e7\u00f5es em caso de v\u00e1rios erros, como URL inacess\u00edvel ou par\u00e2metros inv\u00e1lidos. Envolva a chamada em um bloco try-catch se precisar registrar esses erros.<\/p>\n<p>Depois de criar a fun\u00e7\u00e3o, volte para a guia Eventing e implemente a fun\u00e7\u00e3o <strong>NotifyChanges<\/strong>. Se voc\u00ea optar por alimentar todo o conte\u00fado dos baldes, o aplicativo ser\u00e1 notificado sobre todos os baldes j\u00e1 existentes. <strong>companhia a\u00e9rea<\/strong> documentos e registrar\u00e3o suas IDs.<\/p>\n<h2>Pausa e retomada de uma fun\u00e7\u00e3o<\/h2>\n<p>Uma fun\u00e7\u00e3o Eventing em execu\u00e7\u00e3o pode ser pausada e retomada posteriormente. Quando retomada, a fun\u00e7\u00e3o continua processando os eventos no ponto em que foi pausada. O c\u00f3digo e as configura\u00e7\u00f5es de uma fun\u00e7\u00e3o pausada podem ser modificados, portanto, quando retomados, os eventos adicionais ser\u00e3o processados com a nova vers\u00e3o da fun\u00e7\u00e3o.<\/p>\n<p>Esse recurso \u00e9 especialmente \u00fatil para manter as fun\u00e7\u00f5es de Eventing que j\u00e1 est\u00e3o em produ\u00e7\u00e3o. A defini\u00e7\u00e3o da fun\u00e7\u00e3o pode ser aprimorada com novas funcionalidades ou ajustada ap\u00f3s a altera\u00e7\u00e3o do modelo de dados. No entanto, essas altera\u00e7\u00f5es de c\u00f3digo no meio do voo devem ser compat\u00edveis com quaisquer retornos de chamada de cron\u00f4metro pendentes agendados pelo manipulador<\/p>\n<p>Por exemplo, se modificarmos o c\u00f3digo de nosso <strong>NotifyChanges<\/strong> localize a fun\u00e7\u00e3o na visualiza\u00e7\u00e3o Eventing e clique em seu \u00edcone <strong>Pausa<\/strong> bot\u00e3o:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-7048 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/06\/Eventing-Pause-1024x125.png\" alt=\"\" width=\"900\" height=\"110\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-Pause-1024x125.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-Pause-300x37.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-Pause-768x94.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-Pause-1536x188.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-Pause-20x2.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-Pause-1320x162.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-Pause.png 1732w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<p>Aguarde at\u00e9 que a fun\u00e7\u00e3o seja mostrada como pausada, o que significa que ela parou de processar os eventos. Nesse estado, podemos modificar seu c\u00f3digo e suas configura\u00e7\u00f5es. Ap\u00f3s realizar as modifica\u00e7\u00f5es necess\u00e1rias, podemos retomar a fun\u00e7\u00e3o.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-7049 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/06\/Eventing-Resume-1024x127.png\" alt=\"\" width=\"900\" height=\"112\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-Resume-1024x127.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-Resume-300x37.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-Resume-768x95.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-Resume-1536x190.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-Resume-20x2.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-Resume-1320x163.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-Resume.png 1714w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<p>A fun\u00e7\u00e3o ser\u00e1 reimplantada com a nova implementa\u00e7\u00e3o e continuar\u00e1 processando os eventos no ponto em que parou.<\/p>\n<h3>Recursos<\/h3>\n<p class=\"p1\"><i>Baixar<\/i><\/p>\n<p class=\"p2\"><span class=\"s1\"><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/downloads\/?family=server&amp;product=couchbase-server-developer\">Fa\u00e7a o download do Couchbase Server 6.5<\/a><\/span><\/p>\n<p class=\"p1\"><i>\u00a0<\/i><i>Documenta\u00e7\u00e3o<\/i><\/p>\n<p class=\"p2\"><span class=\"s1\"><a href=\"https:\/\/docs.couchbase.com\/server\/6.5\/release-notes\/relnotes.html\">Notas de vers\u00e3o do Couchbase Server 6.5<\/a><\/span><\/p>\n<p class=\"p2\"><span class=\"s1\"><a href=\"https:\/\/docs.couchbase.com\/server\/6.5\/introduction\/whats-new.html\">Couchbase Server 6.5 O que h\u00e1 de novo<\/a><\/span><\/p>\n<p class=\"p1\"><i>Blogs<\/i><\/p>\n<p class=\"p2\"><span class=\"s1\"><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/announcing-couchbase-server-6-5-0-beta-whats-new-and-improved\/\">Blog: Anunciando o Couchbase Server 6.5 - O que h\u00e1 de novo e aprimorado<\/a><\/span><\/p>\n<p class=\"p2\"><span class=\"s1\"><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-brings-distributed-multi-document-acid-transactions-to-nosql\/\">Blog: O Couchbase traz as transa\u00e7\u00f5es ACID distribu\u00eddas de v\u00e1rios documentos para o NoSQL<\/a><\/span><\/p>\n<p class=\"p2\"><span class=\"s1\"><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/tag\/6-5\/\"><b>Todos os blogs 6.5<\/b><\/a><\/span><\/p>","protected":false},"excerpt":{"rendered":"<p>O Couchbase Eventing Service fornece uma estrutura para escrever suas pr\u00f3prias fun\u00e7\u00f5es para processar eventos de altera\u00e7\u00e3o de dados (cria\u00e7\u00e3o, atualiza\u00e7\u00e3o, exclus\u00e3o\/expira\u00e7\u00e3o). O Couchbase Server 6.5 apresenta um conjunto de aprimoramentos importantes no Eventing Service que permite v\u00e1rios novos casos de uso [...]<\/p>","protected":false},"author":39639,"featured_media":7051,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1816,2273],"tags":[2378,1771,2133],"ppma_author":[9089],"class_list":["post-7045","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server","category-eventing","tag-6-5","tag-curl","tag-functions"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.2 (Yoast SEO v26.2) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Eventing Service Improvements in Couchbase Server 6.5 - The Couchbase Blog Eventing<\/title>\n<meta name=\"description\" content=\"Couchbase Server 6.5 introduces a set of important improvements to the Eventing Service: full access to the source bucket, curl function, possibility to pause and to resume deployed functions.\" \/>\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\/pt\/eventing-service-improvements-in-couchbase-server-6-5\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Eventing Service Improvements in Couchbase Server 6.5\" \/>\n<meta property=\"og:description\" content=\"Couchbase Server 6.5 introduces a set of important improvements to the Eventing Service: full access to the source bucket, curl function, possibility to pause and to resume deployed functions.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/eventing-service-improvements-in-couchbase-server-6-5\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-08-09T17:00:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T05:40:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-Couchbase65.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2048\" \/>\n\t<meta property=\"og:image:height\" content=\"770\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Vaidas Gasiunas, Solution Architect, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Vaidas Gasiunas, Solution Architect, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/eventing-service-improvements-in-couchbase-server-6-5\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/eventing-service-improvements-in-couchbase-server-6-5\/\"},\"author\":{\"name\":\"Vaidas Gasiunas, Solution Architect, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c01f7147993aaff01692dc94d9e339fb\"},\"headline\":\"Eventing Service Improvements in Couchbase Server 6.5\",\"datePublished\":\"2019-08-09T17:00:40+00:00\",\"dateModified\":\"2025-06-14T05:40:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/eventing-service-improvements-in-couchbase-server-6-5\/\"},\"wordCount\":1128,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/eventing-service-improvements-in-couchbase-server-6-5\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-Couchbase65.png\",\"keywords\":[\"6.5\",\"curl\",\"functions\"],\"articleSection\":[\"Couchbase Server\",\"Eventing\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/eventing-service-improvements-in-couchbase-server-6-5\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/eventing-service-improvements-in-couchbase-server-6-5\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/eventing-service-improvements-in-couchbase-server-6-5\/\",\"name\":\"Eventing Service Improvements in Couchbase Server 6.5 - The Couchbase Blog Eventing\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/eventing-service-improvements-in-couchbase-server-6-5\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/eventing-service-improvements-in-couchbase-server-6-5\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-Couchbase65.png\",\"datePublished\":\"2019-08-09T17:00:40+00:00\",\"dateModified\":\"2025-06-14T05:40:26+00:00\",\"description\":\"Couchbase Server 6.5 introduces a set of important improvements to the Eventing Service: full access to the source bucket, curl function, possibility to pause and to resume deployed functions.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/eventing-service-improvements-in-couchbase-server-6-5\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/eventing-service-improvements-in-couchbase-server-6-5\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/eventing-service-improvements-in-couchbase-server-6-5\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-Couchbase65.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-Couchbase65.png\",\"width\":2048,\"height\":770},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/eventing-service-improvements-in-couchbase-server-6-5\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Eventing Service Improvements in Couchbase Server 6.5\"}]},{\"@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\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\/c01f7147993aaff01692dc94d9e339fb\",\"name\":\"Vaidas Gasiunas, Solution Architect, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/d9197990b30dc5da6178ed210c7170c5\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/87e93f8738ca8b966d667b05071f9730245459aa53bdb340d57479a6873942ae?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/87e93f8738ca8b966d667b05071f9730245459aa53bdb340d57479a6873942ae?s=96&d=mm&r=g\",\"caption\":\"Vaidas Gasiunas, Solution Architect, Couchbase\"},\"description\":\"Vaidas Gasiunas is a Solution Architect in Couchbase Germany, helping the customers in the region to adopt Couchbase for their use cases. Vaidas has long year experience in architecting and developing database systems with the focus on scalability an performance optimization.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/vgasiunas\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Aprimoramentos do servi\u00e7o de eventos no Couchbase Server 6.5 - The Couchbase Blog Eventing","description":"O Couchbase Server 6.5 introduz um conjunto de melhorias importantes no Eventing Service: acesso total ao bucket de origem, fun\u00e7\u00e3o curl, possibilidade de pausar e retomar fun\u00e7\u00f5es implantadas.","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\/pt\/eventing-service-improvements-in-couchbase-server-6-5\/","og_locale":"pt_BR","og_type":"article","og_title":"Eventing Service Improvements in Couchbase Server 6.5","og_description":"Couchbase Server 6.5 introduces a set of important improvements to the Eventing Service: full access to the source bucket, curl function, possibility to pause and to resume deployed functions.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/eventing-service-improvements-in-couchbase-server-6-5\/","og_site_name":"The Couchbase Blog","article_published_time":"2019-08-09T17:00:40+00:00","article_modified_time":"2025-06-14T05:40:26+00:00","og_image":[{"width":2048,"height":770,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-Couchbase65.png","type":"image\/png"}],"author":"Vaidas Gasiunas, Solution Architect, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Vaidas Gasiunas, Solution Architect, Couchbase","Est. reading time":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/eventing-service-improvements-in-couchbase-server-6-5\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/eventing-service-improvements-in-couchbase-server-6-5\/"},"author":{"name":"Vaidas Gasiunas, Solution Architect, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c01f7147993aaff01692dc94d9e339fb"},"headline":"Eventing Service Improvements in Couchbase Server 6.5","datePublished":"2019-08-09T17:00:40+00:00","dateModified":"2025-06-14T05:40:26+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/eventing-service-improvements-in-couchbase-server-6-5\/"},"wordCount":1128,"commentCount":1,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/eventing-service-improvements-in-couchbase-server-6-5\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-Couchbase65.png","keywords":["6.5","curl","functions"],"articleSection":["Couchbase Server","Eventing"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/eventing-service-improvements-in-couchbase-server-6-5\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/eventing-service-improvements-in-couchbase-server-6-5\/","url":"https:\/\/www.couchbase.com\/blog\/eventing-service-improvements-in-couchbase-server-6-5\/","name":"Aprimoramentos do servi\u00e7o de eventos no Couchbase Server 6.5 - The Couchbase Blog Eventing","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/eventing-service-improvements-in-couchbase-server-6-5\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/eventing-service-improvements-in-couchbase-server-6-5\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-Couchbase65.png","datePublished":"2019-08-09T17:00:40+00:00","dateModified":"2025-06-14T05:40:26+00:00","description":"O Couchbase Server 6.5 introduz um conjunto de melhorias importantes no Eventing Service: acesso total ao bucket de origem, fun\u00e7\u00e3o curl, possibilidade de pausar e retomar fun\u00e7\u00f5es implantadas.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/eventing-service-improvements-in-couchbase-server-6-5\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/eventing-service-improvements-in-couchbase-server-6-5\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/eventing-service-improvements-in-couchbase-server-6-5\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-Couchbase65.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/06\/Eventing-Couchbase65.png","width":2048,"height":770},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/eventing-service-improvements-in-couchbase-server-6-5\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Eventing Service Improvements in Couchbase Server 6.5"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados NoSQL","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":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@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\/c01f7147993aaff01692dc94d9e339fb","name":"Vaidas Gasiunas, arquiteto de solu\u00e7\u00f5es, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/d9197990b30dc5da6178ed210c7170c5","url":"https:\/\/secure.gravatar.com\/avatar\/87e93f8738ca8b966d667b05071f9730245459aa53bdb340d57479a6873942ae?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/87e93f8738ca8b966d667b05071f9730245459aa53bdb340d57479a6873942ae?s=96&d=mm&r=g","caption":"Vaidas Gasiunas, Solution Architect, Couchbase"},"description":"Vaidas Gasiunas \u00e9 arquiteto de solu\u00e7\u00f5es na Couchbase Alemanha, ajudando os clientes da regi\u00e3o a adotar o Couchbase para seus casos de uso. Vaidas tem muitos anos de experi\u00eancia em arquitetura e desenvolvimento de sistemas de banco de dados com foco em escalabilidade e otimiza\u00e7\u00e3o de desempenho.","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/vgasiunas\/"}]}},"authors":[{"term_id":9089,"user_id":39639,"is_guest":0,"slug":"vgasiunas","display_name":"Vaidas Gasiunas, Solution Architect, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/87e93f8738ca8b966d667b05071f9730245459aa53bdb340d57479a6873942ae?s=96&d=mm&r=g","author_category":"","last_name":"Gasiunas, Solution Architect, Couchbase","first_name":"Vaidas","job_title":"","user_url":"","description":"Vaidas Gasiunas \u00e9 arquiteto de solu\u00e7\u00f5es na Couchbase Alemanha, ajudando os clientes da regi\u00e3o a adotar o Couchbase para seus casos de uso. Vaidas tem muitos anos de experi\u00eancia em arquitetura e desenvolvimento de sistemas de banco de dados com foco em escalabilidade e otimiza\u00e7\u00e3o de desempenho."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/7045","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/39639"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=7045"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/7045\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/7051"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=7045"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=7045"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=7045"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=7045"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}