{"id":730,"date":"2021-05-16T17:24:01","date_gmt":"2021-05-16T16:24:01","guid":{"rendered":"http:\/\/thomas-kopton.de\/vblog\/?p=730"},"modified":"2021-11-13T16:18:57","modified_gmt":"2021-11-13T15:18:57","slug":"vrealize-operations-amqp-integration-using-webhooks","status":"publish","type":"post","link":"https:\/\/thomas-kopton.de\/vblog\/?p=730","title":{"rendered":"vRealize Operations AMQP Integration using Webhooks"},"content":{"rendered":"\n<p>With the version 8.4 vRealize Operations introduced the <strong><span class=\"has-inline-color has-vivid-cyan-blue-color\">Webhook Outbound Plugin<\/span><\/strong> feature. This new Webhook outbound plugin works without any additional software, the Webhook Shim server becomes obsolet.<\/p>\n\n\n\n<p>In this post, I will explain how to integrate <strong><span class=\"has-inline-color has-vivid-cyan-blue-color\">vRealize Operations<\/span><\/strong> with an <strong><span class=\"has-inline-color has-vivid-cyan-blue-color\">AMQP<\/span><\/strong> system. For this exercise, I have deployed a <strong><span class=\"has-inline-color has-vivid-cyan-blue-color\">RabbitMQ<\/span><\/strong> server but the concept should be the same for any AMQP implementation.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">AMQP Basic Concept<\/h4>\n\n\n\n<p>Without going into details of AMQP the very basic concept is to provide a <span class=\"has-inline-color has-vivid-cyan-blue-color\">queue<\/span> for <span class=\"has-inline-color has-vivid-cyan-blue-color\">producers<\/span> and <span class=\"has-inline-color has-vivid-cyan-blue-color\">consumers<\/span>. The producers can put items into the queue and consumers can pick up these items and do whatever they are supposed to do with those items.<\/p>\n\n\n\n<p>Items may be e.g. messages, therefore Advanced Message Queuing Protocol or AMQP. One of the most known implementations of AMQP is <span class=\"has-inline-color has-vivid-cyan-blue-color\">RabbitMQ<\/span>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/amqp-concept.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"283\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/amqp-concept-1024x283.png\" alt=\"\" class=\"wp-image-734\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/amqp-concept-1024x283.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/amqp-concept-300x83.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/amqp-concept-768x212.png 768w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/amqp-concept-1536x425.png 1536w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/amqp-concept.png 2010w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption><em>Figure 1: Basic AMQP concept<\/em><\/figcaption><\/figure>\n\n\n\n<p>In the context of vRealize Operations, we could consider vROps the producer and triggered alerts the items we could put into a queue to let consumers retrieve the items and do some work.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">RabbitMQ Exchange and Queue<\/h4>\n\n\n\n<p>As first step I have configured my RabbitMQ instance with three queues:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><code>vrli.alert.open<\/code> &#8211; for vRealize Log Insight alerts<\/li><li><code>vrops.alert.open<\/code> &#8211; for new vROps alerts<\/li><li><code>vrops.alert.close<\/code> -for canceled vROps alerts<\/li><\/ul>\n\n\n\n<p>As shown in the next picture all three queues are using the <code>amq.direct<\/code> exchange.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/amqp-config.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"402\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/amqp-config-1024x402.png\" alt=\"\" class=\"wp-image-745\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/amqp-config-1024x402.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/amqp-config-300x118.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/amqp-config-768x302.png 768w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/amqp-config-1536x603.png 1536w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/amqp-config.png 2032w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption><em>Figure 2: RabbitMQ queue and exchange concept<\/em><\/figcaption><\/figure>\n\n\n\n<p>The actual binding between exchange and queue is based on a routing key, as shown in the next picture for the <code>vrops.alert.open<\/code> queue.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/binding.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/binding.png\" alt=\"\" class=\"wp-image-747\" width=\"755\" height=\"305\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/binding.png 1006w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/binding-300x121.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/binding-768x310.png 768w\" sizes=\"auto, (max-width: 755px) 100vw, 755px\" \/><\/a><figcaption>Figure 3: Exchange-queue binding example<\/figcaption><\/figure>\n\n\n\n<p>This routing key will be used later on in the payload to route the message to the right queue.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Webhook Outbound Plugin<\/h4>\n\n\n\n<p>The new <span class=\"has-inline-color has-vivid-cyan-blue-color\">Webhook Outbound Plugin<\/span> provides a generic way to integrate (almost) any REST API endpoint without the need for a webhook shim server.<\/p>\n\n\n\n<p>The configuration, as with any outbound plugin, requires the creation of an instance. The config of the instance for RaabbitMQ integration is displayed in the following picture. If you are using other exchanges, hosts, etc. in your RAbbitMQ instance you will need to adjust the URL accordingly.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/outbound-instance.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/outbound-instance-1024x648.png\" alt=\"\" class=\"wp-image-749\" width=\"768\" height=\"486\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/outbound-instance-1024x648.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/outbound-instance-300x190.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/outbound-instance-768x486.png 768w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/outbound-instance-1536x971.png 1536w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/outbound-instance.png 1540w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/a><figcaption><em>Figure 4: Webhook Outbound Plugin instance configuration for RabbitMQ<\/em><\/figcaption><\/figure>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p><a href=\"NOTE: \"><strong><span class=\"has-inline-color has-vivid-red-color\">NOTE:<\/span> <\/strong><\/a><span class=\"has-inline-color has-vivid-red-color\">The test will fail as the test routine does not provide the payload as expected by the publish REST API method. You still need to provide working credentials, ignore the test error message and save the instance.<\/span><\/p>\n<\/div><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Payload Template<\/h4>\n\n\n\n<p><span class=\"has-inline-color has-vivid-cyan-blue-color\">Payload<\/span> <span class=\"has-inline-color has-vivid-cyan-blue-color\">Templates<\/span> are the next building block in the concept. Using the new Payload Templates, you can configure the desired outbound payload granularly down to a single metric level. The following picture shows an example of the payload configuration used for the message reflecting a new open alert in vRealize Operations.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/payload-template.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/payload-template-1024x640.png\" alt=\"\" class=\"wp-image-753\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/payload-template-1024x640.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/payload-template-300x188.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/payload-template-768x480.png 768w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/payload-template-1536x961.png 1536w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/payload-template-2048x1281.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption><em>Figure 5: Payload template for vROps open alert<\/em><\/figcaption><\/figure>\n\n\n\n<p>Important are especially the &#8220;<code>routing key<\/code>&#8221; and the &#8220;<code>payload<\/code>&#8221; parts. The first one ensures that the message will be published to the right queue and the payload is what the consumer is expecting. In my use case, it is just an example containing only a portion of available data.<\/p>\n\n\n\n<p>Both payload template examples, one for new (open) alerts and one for canceled (close) alerts are available on the VMware Code page:<\/p>\n\n\n\n<p><a href=\"https:\/\/code.vmware.com\/samples?id=7609\">VMware Code &#8211; Sample Exchange<\/a><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Notification<\/h4>\n\n\n\n<p>The last step is to create appropriate vRealize Operations Alert <span class=\"has-inline-color has-vivid-cyan-blue-color\">Notifications<\/span> which will be triggered as soon as specified criteria are met and configure the outbound instance and the payload for RabbitMQ as shown in the next picture.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/notification.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"436\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/notification-1024x436.png\" alt=\"\" class=\"wp-image-756\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/notification-1024x436.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/notification-300x128.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/notification-768x327.png 768w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/notification-1536x653.png 1536w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/notification-2048x871.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption><em>Figure 6: Notification settings<\/em><\/figcaption><\/figure>\n\n\n\n<p>And this is the result, messages published to all three queues.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/queues.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/queues-1024x387.png\" alt=\"\" class=\"wp-image-759\" width=\"768\" height=\"290\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/queues-1024x387.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/queues-300x113.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/queues-768x290.png 768w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/queues-1536x580.png 1536w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/queues.png 1600w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/a><figcaption>Figure 7: Queues with messages<\/figcaption><\/figure>\n\n\n\n<p>An example message looks like this one.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/message.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"221\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/message-1024x221.png\" alt=\"\" class=\"wp-image-761\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/message-1024x221.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/message-300x65.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/message-768x166.png 768w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/message-1536x332.png 1536w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/message-2048x442.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption><em>Figure 8: vROps open alert message<\/em><\/figcaption><\/figure>\n\n\n\n<p>The missing part now is the consumers. It could be a vRealize Orchestrator workflow subscribed to a queue or any other consumer processing AMQP messages. Maybe something for a next blog post?<\/p>\n\n\n\n<p><strong>Stay safe.<\/strong><\/p>\n\n\n\n<p>Thomas \u2013&nbsp;<a href=\"https:\/\/twitter.com\/ThomasKopton\">https:\/\/twitter.com\/ThomasKopton<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>With the version 8.4 vRealize Operations introduced the Webhook Outbound Plugin feature. This new Webhook outbound plugin works without any additional software, the Webhook Shim server becomes obsolet. In this post, I will explain how to integrate vRealize Operations with an AMQP system. For this exercise, I have deployed a RabbitMQ server but the concept &#8230;<\/p>\n","protected":false},"author":1,"featured_media":745,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34,2],"tags":[47,6,3],"class_list":["post-730","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vrealize-operations","category-vrops","tag-automation","tag-rest","tag-vrops"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>vRealize Operations AMQP Integration using Webhooks - TOMsOps<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thomas-kopton.de\/vblog\/?p=730\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"vRealize Operations AMQP Integration using Webhooks - TOMsOps\" \/>\n<meta property=\"og:description\" content=\"With the version 8.4 vRealize Operations introduced the Webhook Outbound Plugin feature. This new Webhook outbound plugin works without any additional software, the Webhook Shim server becomes obsolet. In this post, I will explain how to integrate vRealize Operations with an AMQP system. For this exercise, I have deployed a RabbitMQ server but the concept ...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thomas-kopton.de\/vblog\/?p=730\" \/>\n<meta property=\"og:site_name\" content=\"TOMsOps\" \/>\n<meta property=\"article:published_time\" content=\"2021-05-16T16:24:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-11-13T15:18:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/amqp-config.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2032\" \/>\n\t<meta property=\"og:image:height\" content=\"798\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Thomas Kopton\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Thomas Kopton\" \/>\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:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=730#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=730\"},\"author\":{\"name\":\"Thomas Kopton\",\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/#\\\/schema\\\/person\\\/892d6b96c66b1dd4b75c6e32fdbfea82\"},\"headline\":\"vRealize Operations AMQP Integration using Webhooks\",\"datePublished\":\"2021-05-16T16:24:01+00:00\",\"dateModified\":\"2021-11-13T15:18:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=730\"},\"wordCount\":633,\"commentCount\":3,\"image\":{\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=730#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/amqp-config.png\",\"keywords\":[\"automation\",\"REST\",\"vROps\"],\"articleSection\":[\"vRealize Operations\",\"vROps\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=730#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=730\",\"url\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=730\",\"name\":\"vRealize Operations AMQP Integration using Webhooks - TOMsOps\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=730#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=730#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/amqp-config.png\",\"datePublished\":\"2021-05-16T16:24:01+00:00\",\"dateModified\":\"2021-11-13T15:18:57+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/#\\\/schema\\\/person\\\/892d6b96c66b1dd4b75c6e32fdbfea82\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=730#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=730\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=730#primaryimage\",\"url\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/amqp-config.png\",\"contentUrl\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/amqp-config.png\",\"width\":2032,\"height\":798},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=730#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"vRealize Operations AMQP Integration using Webhooks\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/#website\",\"url\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/\",\"name\":\"TOMsOps\",\"description\":\"Just another VMware Cloud Management Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/#\\\/schema\\\/person\\\/892d6b96c66b1dd4b75c6e32fdbfea82\",\"name\":\"Thomas Kopton\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e746aafbd3733172ceb4d600ba1feda61bc87cd3b70f5a9dfb581907cc7973b1?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e746aafbd3733172ceb4d600ba1feda61bc87cd3b70f5a9dfb581907cc7973b1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e746aafbd3733172ceb4d600ba1feda61bc87cd3b70f5a9dfb581907cc7973b1?s=96&d=mm&r=g\",\"caption\":\"Thomas Kopton\"},\"url\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"vRealize Operations AMQP Integration using Webhooks - TOMsOps","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:\/\/thomas-kopton.de\/vblog\/?p=730","og_locale":"en_US","og_type":"article","og_title":"vRealize Operations AMQP Integration using Webhooks - TOMsOps","og_description":"With the version 8.4 vRealize Operations introduced the Webhook Outbound Plugin feature. This new Webhook outbound plugin works without any additional software, the Webhook Shim server becomes obsolet. In this post, I will explain how to integrate vRealize Operations with an AMQP system. For this exercise, I have deployed a RabbitMQ server but the concept ...","og_url":"https:\/\/thomas-kopton.de\/vblog\/?p=730","og_site_name":"TOMsOps","article_published_time":"2021-05-16T16:24:01+00:00","article_modified_time":"2021-11-13T15:18:57+00:00","og_image":[{"width":2032,"height":798,"url":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/amqp-config.png","type":"image\/png"}],"author":"Thomas Kopton","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Thomas Kopton","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thomas-kopton.de\/vblog\/?p=730#article","isPartOf":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=730"},"author":{"name":"Thomas Kopton","@id":"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/892d6b96c66b1dd4b75c6e32fdbfea82"},"headline":"vRealize Operations AMQP Integration using Webhooks","datePublished":"2021-05-16T16:24:01+00:00","dateModified":"2021-11-13T15:18:57+00:00","mainEntityOfPage":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=730"},"wordCount":633,"commentCount":3,"image":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=730#primaryimage"},"thumbnailUrl":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/amqp-config.png","keywords":["automation","REST","vROps"],"articleSection":["vRealize Operations","vROps"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/thomas-kopton.de\/vblog\/?p=730#respond"]}]},{"@type":"WebPage","@id":"https:\/\/thomas-kopton.de\/vblog\/?p=730","url":"https:\/\/thomas-kopton.de\/vblog\/?p=730","name":"vRealize Operations AMQP Integration using Webhooks - TOMsOps","isPartOf":{"@id":"https:\/\/thomas-kopton.de\/vblog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=730#primaryimage"},"image":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=730#primaryimage"},"thumbnailUrl":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/amqp-config.png","datePublished":"2021-05-16T16:24:01+00:00","dateModified":"2021-11-13T15:18:57+00:00","author":{"@id":"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/892d6b96c66b1dd4b75c6e32fdbfea82"},"breadcrumb":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=730#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thomas-kopton.de\/vblog\/?p=730"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/thomas-kopton.de\/vblog\/?p=730#primaryimage","url":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/amqp-config.png","contentUrl":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2021\/05\/amqp-config.png","width":2032,"height":798},{"@type":"BreadcrumbList","@id":"https:\/\/thomas-kopton.de\/vblog\/?p=730#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thomas-kopton.de\/vblog"},{"@type":"ListItem","position":2,"name":"vRealize Operations AMQP Integration using Webhooks"}]},{"@type":"WebSite","@id":"https:\/\/thomas-kopton.de\/vblog\/#website","url":"https:\/\/thomas-kopton.de\/vblog\/","name":"TOMsOps","description":"Just another VMware Cloud Management Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thomas-kopton.de\/vblog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/892d6b96c66b1dd4b75c6e32fdbfea82","name":"Thomas Kopton","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/e746aafbd3733172ceb4d600ba1feda61bc87cd3b70f5a9dfb581907cc7973b1?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e746aafbd3733172ceb4d600ba1feda61bc87cd3b70f5a9dfb581907cc7973b1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e746aafbd3733172ceb4d600ba1feda61bc87cd3b70f5a9dfb581907cc7973b1?s=96&d=mm&r=g","caption":"Thomas Kopton"},"url":"https:\/\/thomas-kopton.de\/vblog\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/posts\/730","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=730"}],"version-history":[{"count":32,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/posts\/730\/revisions"}],"predecessor-version":[{"id":772,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/posts\/730\/revisions\/772"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/media\/745"}],"wp:attachment":[{"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=730"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=730"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=730"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}