{"id":136,"date":"2017-12-12T15:45:49","date_gmt":"2017-12-12T15:45:49","guid":{"rendered":"https:\/\/www.cogin.com\/blog\/?p=136"},"modified":"2017-12-15T14:12:42","modified_gmt":"2017-12-15T13:12:42","slug":"introduction-azure-service-bus-msmq-users-part-1","status":"publish","type":"post","link":"https:\/\/www.cogin.com\/blog\/azure-service-bus\/introduction-azure-service-bus-msmq-users-part-1\/","title":{"rendered":"Introduction to Azure Service Bus for MSMQ users, Part 1"},"content":{"rendered":"<p>This series of blog posts\u00a0is intended for those who already have some MSMQ experience and would like to know more about Azure Service Bus. It&#8217;s based on my own experiences when I learned about Azure, what was familiar and what not, and what looked familiar but surprised me in one way or the other. Since I assume you worked with MSMQ before, I won&#8217;t explain common queuing concepts. Idea is to get you up to speed quickly without wasting time on things you already know.<\/p>\n<p>Also, this series deals with Azure Service Bus as it is at the end of 2017. It&#8217;s possible that some things will change in the future. Ok, let&#8217;s begin.<\/p>\n<h2>There&#8217;s no machine, it&#8217;s now a namespace in the cloud<\/h2>\n<p>The first obvious difference is that Service Bus is managed for us in one of Microsoft&#8217;s data centers*. Equivalent concept to a machine in MSMQ world is a namespace in ASB. At least from a user point of view. Behind the scene it&#8217;s hosted on multiple computers but it\u2019s all transparent to us. Maybe it would be more appropriate to compare it to MSMQ cluster since Azure Service Bus is built from start with the goal of high availability and scalability. Good thing is, a namespace is much, much easier to set up than a Windows Server cluster.<\/p>\n<p>* There&#8217;s also the <a href=\"https:\/\/azure.microsoft.com\/en-us\/overview\/azure-stack\/\">Azure Stack<\/a>\u00a0which you can run on-premise, but it&#8217;s not that easy to get. Besides, most things should apply for that one as well.<\/p>\n<figure id=\"attachment_142\" class=\"thumbnail wp-caption alignnone\" style=\"width: 906px\"><a href=\"https:\/\/www.cogin.com\/blog\/wp-content\/uploads\/2017\/12\/CreateAzureNamespace.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-142 size-full\" title=\"Creating Azure Service Bus namespace\" src=\"https:\/\/www.cogin.com\/blog\/wp-content\/uploads\/2017\/12\/CreateAzureNamespace.png\" alt=\"\" width=\"896\" height=\"415\" srcset=\"https:\/\/www.cogin.com\/blog\/wp-content\/uploads\/2017\/12\/CreateAzureNamespace.png 896w, https:\/\/www.cogin.com\/blog\/wp-content\/uploads\/2017\/12\/CreateAzureNamespace-300x139.png 300w, https:\/\/www.cogin.com\/blog\/wp-content\/uploads\/2017\/12\/CreateAzureNamespace-768x356.png 768w\" sizes=\"auto, (max-width: 896px) 100vw, 896px\" \/><\/a><figcaption class=\"caption wp-caption-text\">Creating Azure Service Bus namespace<\/figcaption><\/figure>\n<p>When we try to create a namespace from Azure&#8217;s portal, we\u2019ll encounter first problematic question &#8211; which tier to use? At the time of writing there are 3 different tiers &#8211; Basic, Standard, and Premium. Tiers define which features you\u2019ll be able to use, with what kind of performance and for what price. For learning purposes, I&#8217;d recommend to create a Standard Tier &#8211; Basic is too limited and doesn&#8217;t support all new interesting messaging concepts, and Premium is too expensive. After you get familiar with ASB you&#8217;ll know which one will be the best match for your production-level needs. For start, Standard will allow you to learn.<\/p>\n<p>Btw. once namespace is created and you take &#8220;Shared access key&#8221; from portal, you can continue your journey with <a href=\"\/mq\/\">QueueExplorer<\/a>\u00a0since it supports Azure Service Bus as well.<\/p>\n<h2>Azure Service Bus has queues as well<\/h2>\n<p>These queues are not that different from MSMQ queues on first look. They&#8217;re standard FIFO queues, you Send messages on one end and Receive them on another. There are no public\/private queues like in MSMQ.<\/p>\n<figure id=\"attachment_144\" class=\"thumbnail wp-caption alignnone\" style=\"width: 396px\"><a href=\"https:\/\/www.cogin.com\/blog\/wp-content\/uploads\/2017\/12\/AzureServiceBusQueues.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-144 size-full\" title=\"Queues in Service Bus\" src=\"https:\/\/www.cogin.com\/blog\/wp-content\/uploads\/2017\/12\/AzureServiceBusQueues.png\" alt=\"\" width=\"386\" height=\"237\" srcset=\"https:\/\/www.cogin.com\/blog\/wp-content\/uploads\/2017\/12\/AzureServiceBusQueues.png 386w, https:\/\/www.cogin.com\/blog\/wp-content\/uploads\/2017\/12\/AzureServiceBusQueues-300x184.png 300w\" sizes=\"auto, (max-width: 386px) 100vw, 386px\" \/><\/a><figcaption class=\"caption wp-caption-text\">Queues in Service Bus<\/figcaption><\/figure>\n<p>I did say that queues are first in first out structures, but the order of delivery is not guaranteed in Service Bus! For start, there are so-called partitioned queues which are stored on multiple machines for performance and storage reasons. When you receive from that kind of queue messages come out in more or less random order! Also, if multiple receivers take messages, you can\u2019t guarantee their order. If message order is important for your scenario, you can use session queues to assure that.<\/p>\n<p>We&#8217;ll discuss these and other queue differences later.<\/p>\n<h2>Messages look familiar<\/h2>\n<p>On first glance, Service Bus messages are not that different from MSMQ&#8217;s. They have ID, Label, Body, and some other stuff as well.<\/p>\n<p>First surprise &#8211; messages are limited to 256KB! They can be 1MB in the premium tier, but even that is not so generous. If you&#8217;re sending bigger documents you&#8217;ll have to either store them in some separate Azure based storage and only transfer some kind of &#8220;pointer&#8221; to that storage or split them into pieces smaller than message limit.<\/p>\n<figure id=\"attachment_147\" class=\"thumbnail wp-caption alignnone\" style=\"width: 824px\"><a href=\"https:\/\/www.cogin.com\/blog\/wp-content\/uploads\/2017\/12\/ServiceBusMessage.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-147 size-full\" title=\"Azure Service Bus message\" src=\"https:\/\/www.cogin.com\/blog\/wp-content\/uploads\/2017\/12\/ServiceBusMessage.png\" alt=\"\" width=\"814\" height=\"701\" srcset=\"https:\/\/www.cogin.com\/blog\/wp-content\/uploads\/2017\/12\/ServiceBusMessage.png 814w, https:\/\/www.cogin.com\/blog\/wp-content\/uploads\/2017\/12\/ServiceBusMessage-300x258.png 300w, https:\/\/www.cogin.com\/blog\/wp-content\/uploads\/2017\/12\/ServiceBusMessage-768x661.png 768w\" sizes=\"auto, (max-width: 814px) 100vw, 814px\" \/><\/a><figcaption class=\"caption wp-caption-text\">Azure Service Bus message<\/figcaption><\/figure>\n<p>Second surprise &#8211; message ID is not a unique identifier! And you can write anything you like in that ID field, Service Bus will auto-generate something only if it&#8217;s empty. You can create a queue with &#8220;Duplicate detection&#8221; turned on, but that&#8217;s optional. There\u2019s another field called &#8220;Sequence #&#8221; which is much more like MSMQ&#8217;s ID. It\u2019s an auto-increasing number, although not necessarily +1, but\u00a0at least\u00a0message which was sent later will always have that number higher than message which was sent earlier.<\/p>\n<h3>Additional message storage<\/h3>\n<p>Service Bus doesn\u2019t have Extension or \u201cApp specific\u201d field for storing additional properties, but it has something better &#8211; custom properties. It\u2019s a key\/value store where you can put whatever you want and it will be part of a message.<\/p>\n<figure id=\"attachment_148\" class=\"thumbnail wp-caption alignnone\" style=\"width: 402px\"><a href=\"https:\/\/www.cogin.com\/blog\/wp-content\/uploads\/2017\/12\/MessageCustomProperties.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-148 size-full\" title=\"Message custom properties\" src=\"https:\/\/www.cogin.com\/blog\/wp-content\/uploads\/2017\/12\/MessageCustomProperties.png\" alt=\"\" width=\"392\" height=\"193\" srcset=\"https:\/\/www.cogin.com\/blog\/wp-content\/uploads\/2017\/12\/MessageCustomProperties.png 392w, https:\/\/www.cogin.com\/blog\/wp-content\/uploads\/2017\/12\/MessageCustomProperties-300x148.png 300w\" sizes=\"auto, (max-width: 392px) 100vw, 392px\" \/><\/a><figcaption class=\"caption wp-caption-text\">Message custom properties<\/figcaption><\/figure>\n<p>Cool thing if you&#8217;re using <a href=\"\/mq\/professional.php\">QueueExplorer Professional<\/a> is &#8211; you can display these properties as columns in a message list. So if your messages have a property called InvoiceAmount, you can see that immediately for all your messages without\u00a0opening them.<\/p>\n<figure id=\"attachment_173\" class=\"thumbnail wp-caption alignnone\" style=\"width: 294px\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-173 size-full\" title=\"Displaying custom properties in QueueExplorer's message list\" src=\"https:\/\/www.cogin.com\/blog\/wp-content\/uploads\/2017\/12\/CustomProperties.png\" alt=\"\" width=\"284\" height=\"133\" \/><figcaption class=\"caption wp-caption-text\">Displaying custom properties in QueueExplorer&#8217;s message list<\/figcaption><\/figure>\n<p>Another cool thing is you can use values from these fields to filter subscriptions.<\/p>\n<p>We\u2019ll talk about topics and subscriptions in <a href=\"https:\/\/www.cogin.com\/blog\/msmq\/topics-subscriptions-azure-service-bus-msmq-users-part-2\/\">Part 2<\/a>.<\/p>\n<p><a href=\"https:\/\/www.cogin.com\/articles\/Introduction-to-azure-service-bus-for-MSMQ-users.php\">Links to all 5 parts<\/a>\u00a0of this series.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This series of blog posts\u00a0is intended for those who already have some MSMQ experience and would like to know more about Azure Service Bus. It&#8217;s based on my own experiences when I learned about Azure, what was familiar and what not, and what looked familiar but surprised me in one way or the other. Since [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":142,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,2],"tags":[11,5],"class_list":["post-136","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure-service-bus","category-msmq","tag-azure-service-bus","tag-msmq"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Introduction to Azure Service Bus for MSMQ users, Part 1<\/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:\/\/www.cogin.com\/blog\/azure-service-bus\/introduction-azure-service-bus-msmq-users-part-1\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Introduction to Azure Service Bus for MSMQ users, Part 1\" \/>\n<meta property=\"og:description\" content=\"This series of blog posts\u00a0is intended for those who already have some MSMQ experience and would like to know more about Azure Service Bus. It&#8217;s based on my own experiences when I learned about Azure, what was familiar and what not, and what looked familiar but surprised me in one way or the other. Since [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.cogin.com\/blog\/azure-service-bus\/introduction-azure-service-bus-msmq-users-part-1\/\" \/>\n<meta property=\"og:site_name\" content=\"Cogin blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-12-12T15:45:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-12-15T13:12:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.cogin.com\/blog\/wp-content\/uploads\/2017\/12\/CreateAzureNamespace.png\" \/>\n\t<meta property=\"og:image:width\" content=\"896\" \/>\n\t<meta property=\"og:image:height\" content=\"415\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Dejan Grujic\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dejan Grujic\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.cogin.com\/blog\/azure-service-bus\/introduction-azure-service-bus-msmq-users-part-1\/\",\"url\":\"https:\/\/www.cogin.com\/blog\/azure-service-bus\/introduction-azure-service-bus-msmq-users-part-1\/\",\"name\":\"Introduction to Azure Service Bus for MSMQ users, Part 1\",\"isPartOf\":{\"@id\":\"https:\/\/www.cogin.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.cogin.com\/blog\/azure-service-bus\/introduction-azure-service-bus-msmq-users-part-1\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.cogin.com\/blog\/azure-service-bus\/introduction-azure-service-bus-msmq-users-part-1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.cogin.com\/blog\/wp-content\/uploads\/2017\/12\/CreateAzureNamespace.png\",\"datePublished\":\"2017-12-12T15:45:49+00:00\",\"dateModified\":\"2017-12-15T13:12:42+00:00\",\"author\":{\"@id\":\"https:\/\/www.cogin.com\/blog\/#\/schema\/person\/e0c4fd92043868daa052d5978d69ed22\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.cogin.com\/blog\/azure-service-bus\/introduction-azure-service-bus-msmq-users-part-1\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.cogin.com\/blog\/azure-service-bus\/introduction-azure-service-bus-msmq-users-part-1\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.cogin.com\/blog\/azure-service-bus\/introduction-azure-service-bus-msmq-users-part-1\/#primaryimage\",\"url\":\"https:\/\/www.cogin.com\/blog\/wp-content\/uploads\/2017\/12\/CreateAzureNamespace.png\",\"contentUrl\":\"https:\/\/www.cogin.com\/blog\/wp-content\/uploads\/2017\/12\/CreateAzureNamespace.png\",\"width\":896,\"height\":415},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.cogin.com\/blog\/azure-service-bus\/introduction-azure-service-bus-msmq-users-part-1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.cogin.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introduction to Azure Service Bus for MSMQ users, Part 1\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.cogin.com\/blog\/#website\",\"url\":\"https:\/\/www.cogin.com\/blog\/\",\"name\":\"Cogin blog\",\"description\":\"Queuing tools and articles\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.cogin.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.cogin.com\/blog\/#\/schema\/person\/e0c4fd92043868daa052d5978d69ed22\",\"name\":\"Dejan Grujic\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.cogin.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e0bf2f4ab23ef7c6f2784ae50708b926?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e0bf2f4ab23ef7c6f2784ae50708b926?s=96&d=mm&r=g\",\"caption\":\"Dejan Grujic\"},\"sameAs\":[\"http:\/\/www.cogin.com\"],\"url\":\"https:\/\/www.cogin.com\/blog\/author\/gruja\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Introduction to Azure Service Bus for MSMQ users, Part 1","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.cogin.com\/blog\/azure-service-bus\/introduction-azure-service-bus-msmq-users-part-1\/","og_locale":"en_US","og_type":"article","og_title":"Introduction to Azure Service Bus for MSMQ users, Part 1","og_description":"This series of blog posts\u00a0is intended for those who already have some MSMQ experience and would like to know more about Azure Service Bus. It&#8217;s based on my own experiences when I learned about Azure, what was familiar and what not, and what looked familiar but surprised me in one way or the other. Since [&hellip;]","og_url":"https:\/\/www.cogin.com\/blog\/azure-service-bus\/introduction-azure-service-bus-msmq-users-part-1\/","og_site_name":"Cogin blog","article_published_time":"2017-12-12T15:45:49+00:00","article_modified_time":"2017-12-15T13:12:42+00:00","og_image":[{"width":896,"height":415,"url":"https:\/\/www.cogin.com\/blog\/wp-content\/uploads\/2017\/12\/CreateAzureNamespace.png","type":"image\/png"}],"author":"Dejan Grujic","twitter_misc":{"Written by":"Dejan Grujic","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.cogin.com\/blog\/azure-service-bus\/introduction-azure-service-bus-msmq-users-part-1\/","url":"https:\/\/www.cogin.com\/blog\/azure-service-bus\/introduction-azure-service-bus-msmq-users-part-1\/","name":"Introduction to Azure Service Bus for MSMQ users, Part 1","isPartOf":{"@id":"https:\/\/www.cogin.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.cogin.com\/blog\/azure-service-bus\/introduction-azure-service-bus-msmq-users-part-1\/#primaryimage"},"image":{"@id":"https:\/\/www.cogin.com\/blog\/azure-service-bus\/introduction-azure-service-bus-msmq-users-part-1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.cogin.com\/blog\/wp-content\/uploads\/2017\/12\/CreateAzureNamespace.png","datePublished":"2017-12-12T15:45:49+00:00","dateModified":"2017-12-15T13:12:42+00:00","author":{"@id":"https:\/\/www.cogin.com\/blog\/#\/schema\/person\/e0c4fd92043868daa052d5978d69ed22"},"breadcrumb":{"@id":"https:\/\/www.cogin.com\/blog\/azure-service-bus\/introduction-azure-service-bus-msmq-users-part-1\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.cogin.com\/blog\/azure-service-bus\/introduction-azure-service-bus-msmq-users-part-1\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.cogin.com\/blog\/azure-service-bus\/introduction-azure-service-bus-msmq-users-part-1\/#primaryimage","url":"https:\/\/www.cogin.com\/blog\/wp-content\/uploads\/2017\/12\/CreateAzureNamespace.png","contentUrl":"https:\/\/www.cogin.com\/blog\/wp-content\/uploads\/2017\/12\/CreateAzureNamespace.png","width":896,"height":415},{"@type":"BreadcrumbList","@id":"https:\/\/www.cogin.com\/blog\/azure-service-bus\/introduction-azure-service-bus-msmq-users-part-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.cogin.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Introduction to Azure Service Bus for MSMQ users, Part 1"}]},{"@type":"WebSite","@id":"https:\/\/www.cogin.com\/blog\/#website","url":"https:\/\/www.cogin.com\/blog\/","name":"Cogin blog","description":"Queuing tools and articles","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.cogin.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.cogin.com\/blog\/#\/schema\/person\/e0c4fd92043868daa052d5978d69ed22","name":"Dejan Grujic","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.cogin.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e0bf2f4ab23ef7c6f2784ae50708b926?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e0bf2f4ab23ef7c6f2784ae50708b926?s=96&d=mm&r=g","caption":"Dejan Grujic"},"sameAs":["http:\/\/www.cogin.com"],"url":"https:\/\/www.cogin.com\/blog\/author\/gruja\/"}]}},"_links":{"self":[{"href":"https:\/\/www.cogin.com\/blog\/wp-json\/wp\/v2\/posts\/136","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cogin.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.cogin.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.cogin.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cogin.com\/blog\/wp-json\/wp\/v2\/comments?post=136"}],"version-history":[{"count":36,"href":"https:\/\/www.cogin.com\/blog\/wp-json\/wp\/v2\/posts\/136\/revisions"}],"predecessor-version":[{"id":232,"href":"https:\/\/www.cogin.com\/blog\/wp-json\/wp\/v2\/posts\/136\/revisions\/232"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.cogin.com\/blog\/wp-json\/wp\/v2\/media\/142"}],"wp:attachment":[{"href":"https:\/\/www.cogin.com\/blog\/wp-json\/wp\/v2\/media?parent=136"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cogin.com\/blog\/wp-json\/wp\/v2\/categories?post=136"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cogin.com\/blog\/wp-json\/wp\/v2\/tags?post=136"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}