{"id":117396,"date":"2023-05-04T07:00:00","date_gmt":"2023-05-04T04:00:00","guid":{"rendered":"https:\/\/www.javacodegeeks.com\/?p=117396"},"modified":"2023-05-02T17:33:32","modified_gmt":"2023-05-02T14:33:32","slug":"eventarc-with-cloudrun","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2023\/05\/eventarc-with-cloudrun.html","title":{"rendered":"EventArc with CloudRun"},"content":{"rendered":"<p>&nbsp;<a href=\"https:\/\/cloud.google.com\/eventarc\/docs\" target=\"_blank\" rel=\"noopener\">Google Cloud EventArc<\/a>&nbsp;provides a simple way to act on events generated by a variety of Google Cloud Services.<\/p>\n<p>Consider an example.<\/p>\n<p>When a <a href=\"https:\/\/cloud.google.com\/build\" target=\"_blank\" rel=\"noopener\">Cloud Build<\/a> trigger is run, I want to be notified of this event &#8211;<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2023\/05\/image.png\"><img decoding=\"async\" width=\"1024\" height=\"266\" src=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2023\/05\/image-1024x266.png\" alt=\"\" class=\"wp-image-117403\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2023\/05\/image-1024x266.png 1024w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2023\/05\/image-300x78.png 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2023\/05\/image-768x199.png 768w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2023\/05\/image-1536x398.png 1536w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2023\/05\/image.png 1600w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n<p>Eventarc makes this integration simple<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2023\/05\/image-1.png\"><img decoding=\"async\" width=\"1024\" height=\"191\" src=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2023\/05\/image-1-1024x191.png\" alt=\"\" class=\"wp-image-117405\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2023\/05\/image-1-1024x191.png 1024w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2023\/05\/image-1-300x56.png 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2023\/05\/image-1-768x143.png 768w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2023\/05\/image-1.png 1514w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n<p>The internals of how it does this is <a href=\"https:\/\/cloud.google.com\/eventarc\/docs\/overview\">documented<\/a>\u00a0well. Based on the source, the event is either received by EventArc directly or via <a href=\"https:\/\/cloud.google.com\/logging\/docs\/audit\">Cloud Audit Logs<\/a>. EventArc then dispatches the event to the destination via another pub\/sub topic that it maintains.\u00a0<\/p>\n<p>These underlying details are well hidden though, so as a developer concerned only about consuming the Build Events, I can focus on the payload of the event and ignore the mechanics of how EventArc gets the message from the source to my service.<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<h2 class=\"wp-block-heading\">Sample EventArc listener<\/h2>\n<p>Since I am interested in just the events and its payload, all I have to do from an application perspective is to expose an HTTP endpoint responding to a POST message with the Content being the event that I am concerned about. Here is such an endpoint in Java using <a href=\"https:\/\/spring.io\/\" target=\"_blank\" rel=\"noopener\">Spring Boot <\/a>as the framework:<\/p>\n<div>\n<pre class=\"brush:java\">@RestController\npublic class EventArcMessageController {\n    ...\n    \n    @RequestMapping(value = \"\/\", method = RequestMethod.POST)\n    public Mono&lt;ResponseEntity&lt;JsonNode&gt;&gt; receiveMessage(\n            @RequestBody JsonNode body, @RequestHeader Map&lt;String, String&gt; headers) {\n        LOGGER.info(\"Received message: {}, headers: {}\", JsonUtils.writeValueAsString(body, objectMapper), headers);\n        return Mono.just(ResponseEntity.ok(body));\n    }\n}<\/pre>\n<\/div>\n<p>The full sample is available <a href=\"https:\/\/github.com\/bijukunjummen\/cloudbuild-eventarc-sample\" target=\"_blank\" rel=\"noopener\">here<\/a><\/p>\n<p>In this specific instance all the endpoint is doing is to log the message and the headers accompanying the message. As long as the response code is 200, EventArc would consider the handling to be successful.&nbsp;<\/p>\n<p>EventArc supports over 130 Google Cloud Services, so consuming myriad events from a bunch of services is easy.<\/p>\n<h2 class=\"wp-block-heading\">EventArc Trigger<\/h2>\n<p>Once I have the EventArc deployed as a Cloud Run service, to integrate this with the Cloud Build Events in EventArc, all I have to do is to create an EventArc trigger. This can be done using the UI:<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2023\/05\/image-2.png\"><img decoding=\"async\" src=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2023\/05\/image-2-1024x959.png\" alt=\"\" class=\"wp-image-117406\" width=\"768\" height=\"719\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2023\/05\/image-2-1024x959.png 1024w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2023\/05\/image-2-300x281.png 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2023\/05\/image-2-768x719.png 768w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2023\/05\/image-2-1536x1438.png 1536w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2023\/05\/image-2.png 1600w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/><\/a><\/figure>\n<\/div>\n<p>or using command line:<\/p>\n<div>\n<pre class=\"brush:java\">gcloud eventarc triggers update cloud-build-trigger \\\n--location=us-west1 \\\n--destination-run-service=cloudbuild-eventarc-sample \\\n--destination-run-region=us-west1 \\\n--destination-run-path=\"\/\" \\\n--event-filters=\"type=google.cloud.audit.log.v1.written\" \\\n--event-filters=\"serviceName=cloudbuild.googleapis.com\" \\\n--event-filters=\"methodName=google.devtools.cloudbuild.v1.CloudBuild.CreateBuild\"<\/pre>\n<\/div>\n<p>and that is it, EventArc handles all the underlying details of the integration.<\/p>\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n<p>I have the full java code available <a href=\"https:\/\/github.com\/bijukunjummen\/cloudbuild-eventarc-sample\" target=\"_blank\" rel=\"noopener\">here<\/a> which shows what a full code would look like. EventArc makes it very simple to integrate events from Google Cloud Services with custom applications.<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td>\n<p>Published on Java Code Geeks with permission by Biju Kunjummen, partner at our <a href=\"\/\/www.javacodegeeks.com\/join-us\/jcg\/\" target=\"_blank\" rel=\"noopener\">JCG program<\/a>. See the original article here: <a href=\"http:\/\/www.java-allandsundry.com\/2023\/04\/eventarc-with-cloudrun.html\" target=\"_blank\" rel=\"noopener\">EventArc with CloudRun<\/a><\/p>\n<p>Opinions expressed by Java Code Geeks contributors are their own.<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp;Google Cloud EventArc&nbsp;provides a simple way to act on events generated by a variety of Google Cloud Services. Consider an example. When a Cloud Build trigger is run, I want to be notified of this event &#8211; Eventarc makes this integration simple The internals of how it does this is documented\u00a0well. Based on the source, &hellip;<\/p>\n","protected":false},"author":236,"featured_media":112,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-117396","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>EventArc with CloudRun - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"&nbsp;Google Cloud EventArc&nbsp;provides a simple way to act on events generated by a variety of Google Cloud Services. Consider an example. When a Cloud\" \/>\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.javacodegeeks.com\/2023\/05\/eventarc-with-cloudrun.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"EventArc with CloudRun - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"&nbsp;Google Cloud EventArc&nbsp;provides a simple way to act on events generated by a variety of Google Cloud Services. Consider an example. When a Cloud\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2023\/05\/eventarc-with-cloudrun.html\" \/>\n<meta property=\"og:site_name\" content=\"Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-04T04:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Biju Kunjummen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Biju Kunjummen\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2023\\\/05\\\/eventarc-with-cloudrun.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2023\\\/05\\\/eventarc-with-cloudrun.html\"},\"author\":{\"name\":\"Biju Kunjummen\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/802eedfe6f17c3c13fa656af46b6b0e5\"},\"headline\":\"EventArc with CloudRun\",\"datePublished\":\"2023-05-04T04:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2023\\\/05\\\/eventarc-with-cloudrun.html\"},\"wordCount\":375,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2023\\\/05\\\/eventarc-with-cloudrun.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2023\\\/05\\\/eventarc-with-cloudrun.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2023\\\/05\\\/eventarc-with-cloudrun.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2023\\\/05\\\/eventarc-with-cloudrun.html\",\"name\":\"EventArc with CloudRun - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2023\\\/05\\\/eventarc-with-cloudrun.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2023\\\/05\\\/eventarc-with-cloudrun.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"datePublished\":\"2023-05-04T04:00:00+00:00\",\"description\":\"&nbsp;Google Cloud EventArc&nbsp;provides a simple way to act on events generated by a variety of Google Cloud Services. Consider an example. When a Cloud\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2023\\\/05\\\/eventarc-with-cloudrun.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2023\\\/05\\\/eventarc-with-cloudrun.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2023\\\/05\\\/eventarc-with-cloudrun.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"width\":150,\"height\":150,\"caption\":\"java-interview-questions-answers\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2023\\\/05\\\/eventarc-with-cloudrun.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Enterprise Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\\\/enterprise-java\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"EventArc with CloudRun\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Developers Resource Center\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.javacodegeeks.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/javacodegeeks\",\"https:\\\/\\\/x.com\\\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/802eedfe6f17c3c13fa656af46b6b0e5\",\"name\":\"Biju Kunjummen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/66af1504c76f011746c89812efce168850f07dce91ce881e62795e10c99d30b3?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/66af1504c76f011746c89812efce168850f07dce91ce881e62795e10c99d30b3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/66af1504c76f011746c89812efce168850f07dce91ce881e62795e10c99d30b3?s=96&d=mm&r=g\",\"caption\":\"Biju Kunjummen\"},\"sameAs\":[\"http:\\\/\\\/biju-allandsundry.blogspot.com\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/Biju-Kunjummen\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"EventArc with CloudRun - Java Code Geeks","description":"&nbsp;Google Cloud EventArc&nbsp;provides a simple way to act on events generated by a variety of Google Cloud Services. Consider an example. When a Cloud","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.javacodegeeks.com\/2023\/05\/eventarc-with-cloudrun.html","og_locale":"en_US","og_type":"article","og_title":"EventArc with CloudRun - Java Code Geeks","og_description":"&nbsp;Google Cloud EventArc&nbsp;provides a simple way to act on events generated by a variety of Google Cloud Services. Consider an example. When a Cloud","og_url":"https:\/\/www.javacodegeeks.com\/2023\/05\/eventarc-with-cloudrun.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2023-05-04T04:00:00+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","type":"image\/jpeg"}],"author":"Biju Kunjummen","twitter_card":"summary_large_image","twitter_creator":"@javacodegeeks","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Biju Kunjummen","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2023\/05\/eventarc-with-cloudrun.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2023\/05\/eventarc-with-cloudrun.html"},"author":{"name":"Biju Kunjummen","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/802eedfe6f17c3c13fa656af46b6b0e5"},"headline":"EventArc with CloudRun","datePublished":"2023-05-04T04:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2023\/05\/eventarc-with-cloudrun.html"},"wordCount":375,"commentCount":0,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2023\/05\/eventarc-with-cloudrun.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2023\/05\/eventarc-with-cloudrun.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2023\/05\/eventarc-with-cloudrun.html","url":"https:\/\/www.javacodegeeks.com\/2023\/05\/eventarc-with-cloudrun.html","name":"EventArc with CloudRun - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2023\/05\/eventarc-with-cloudrun.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2023\/05\/eventarc-with-cloudrun.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","datePublished":"2023-05-04T04:00:00+00:00","description":"&nbsp;Google Cloud EventArc&nbsp;provides a simple way to act on events generated by a variety of Google Cloud Services. Consider an example. When a Cloud","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2023\/05\/eventarc-with-cloudrun.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2023\/05\/eventarc-with-cloudrun.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2023\/05\/eventarc-with-cloudrun.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","width":150,"height":150,"caption":"java-interview-questions-answers"},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2023\/05\/eventarc-with-cloudrun.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java","item":"https:\/\/www.javacodegeeks.com\/category\/java"},{"@type":"ListItem","position":3,"name":"Enterprise Java","item":"https:\/\/www.javacodegeeks.com\/category\/java\/enterprise-java"},{"@type":"ListItem","position":4,"name":"EventArc with CloudRun"}]},{"@type":"WebSite","@id":"https:\/\/www.javacodegeeks.com\/#website","url":"https:\/\/www.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Developers Resource Center","publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/802eedfe6f17c3c13fa656af46b6b0e5","name":"Biju Kunjummen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/66af1504c76f011746c89812efce168850f07dce91ce881e62795e10c99d30b3?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/66af1504c76f011746c89812efce168850f07dce91ce881e62795e10c99d30b3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/66af1504c76f011746c89812efce168850f07dce91ce881e62795e10c99d30b3?s=96&d=mm&r=g","caption":"Biju Kunjummen"},"sameAs":["http:\/\/biju-allandsundry.blogspot.com"],"url":"https:\/\/www.javacodegeeks.com\/author\/Biju-Kunjummen"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/117396","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/users\/236"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=117396"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/117396\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/112"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=117396"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=117396"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=117396"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}