{"id":17306,"date":"2024-05-14T14:48:18","date_gmt":"2024-05-14T14:48:18","guid":{"rendered":"https:\/\/dynamics.folio3.com\/blog\/?p=17306"},"modified":"2024-05-15T09:24:51","modified_gmt":"2024-05-15T09:24:51","slug":"streamlining-communication-with-masstransit-and-rabbitmq","status":"publish","type":"post","link":"https:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/","title":{"rendered":"Streamlining Communication with Masstransit and RabbitMQ"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"17306\" class=\"elementor elementor-17306\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7a7e3ef2 e-flex e-con-boxed e-con e-parent\" data-id=\"7a7e3ef2\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-143fad9e elementor-widget elementor-widget-text-editor\" data-id=\"143fad9e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><strong><u>Introduction:<\/u><\/strong><\/p><p>In today&#8217;s distributed system landscape, efficient communication between microservices is crucial for maintaining scalability, reliability, and performance. In this technical blog, we&#8217;ll delve into how Masstransit and RabbitMQ can be combined to streamline communication within microservices architecture.<\/p><p>\u00a0<\/p><p><strong><u>Introduction to RabbitMQ:<\/u><\/strong><\/p><p><strong>Overview of RabbitMQ: <\/strong><\/p><p>RabbitMQ is a highly reliable message broker that acts as an intermediary for communication between distributed applications. It implements the Advanced Message Queuing Protocol (AMQP), a standardized messaging protocol, making it interoperable with a wide range of platforms and languages.<\/p><p>Message Queues, Exchanges, and Bindings:<\/p><ul><li><strong>Message Queues:<\/strong> RabbitMQ uses message queues to store and route messages between producers and consumers. Messages are placed in queues until they are consumed by subscribers.<\/li><li><strong>Exchanges<\/strong>: Exchanges receive messages from producers and route them to the appropriate queues based on routing rules.<\/li><li><strong>Bindings:<\/strong> Bindings define the relationship between exchanges and queues, determining how messages are routed.<\/li><\/ul><p><strong><u>Why To Use RabbitMQ:<\/u><\/strong><\/p><p><strong>Reliable Messaging<\/strong>:<\/p><p>RabbitMQ ensures reliable message delivery by providing features such as message acknowledgment, message persistence, and message retry mechanisms.<\/p><p><strong>Message Routing and Filtering<\/strong>:<\/p><p>RabbitMQ supports flexible message routing and filtering based on message attributes and patterns. This allows messages to be selectively routed to specific queues or consumers based on predefined criteria.<\/p><p><strong><u>Installing RabbitMQ through Docker:<\/u><\/strong><\/p><p>To install RabbitMQ locally using Docker, you can follow these steps:<\/p><ul><li><strong>Install Docker: <\/strong><\/li><\/ul><p>Make sure you have Docker installed on your machine. You can download and install Docker from the official website: Docker.<\/p><ul><li><strong>Pull RabbitMQ Image: <\/strong><\/li><\/ul><p>Open a terminal or command prompt and run the following command to pull the official RabbitMQ Docker image from Docker Hub:<\/p><pre>docker pull rabbitmq<\/pre><ul><li><strong>Run RabbitMQ Container: <\/strong><\/li><\/ul><p>Once the image is downloaded, you can run a RabbitMQ container using the following command:<\/p><pre>docker run -d --name my-rabbit -p 5672:5672 -p 15672:15672 rabbitmq<\/pre><ul><li><span style=\"color: #999999;\">-d:<\/span> Run the container in the background.<\/li><li><span style=\"color: #999999;\">&#8211;name my-rabbit:<\/span> Assign a name to the container (you can choose any name).<\/li><li><span style=\"color: #999999;\">-p 5672:5672:<\/span> Map the RabbitMQ default port for AMQP (5672).<\/li><li><span style=\"color: #999999;\">-p 15672:15672:<\/span> Map the port for the RabbitMQ management plugin (15672).<\/li><\/ul><ul><li><strong>Access RabbitMQ Management Console: <\/strong><\/li><\/ul><p>You can access the RabbitMQ Management Console by opening your web browser and navigating to http:\/\/localhost:15672. The default credentials are:<\/p><ul><li>Username: <span style=\"color: #999999;\">guest<\/span><\/li><li>Password: <span style=\"color: #999999;\">guest<\/span><\/li><\/ul><p><strong> <img fetchpriority=\"high\" decoding=\"async\" class=\"aligncenter size-full wp-image-17483\" src=\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_01.jpg\" alt=\"\" width=\"1191\" height=\"359\" srcset=\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_01.jpg 1191w, https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_01-300x90.jpg 300w, https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_01-1024x309.jpg 1024w, https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_01-768x231.jpg 768w\" sizes=\"(max-width: 1191px) 100vw, 1191px\" \/><\/strong><\/p><p><img decoding=\"async\" class=\"aligncenter size-full wp-image-17484\" src=\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_02.jpg\" alt=\"\" width=\"1176\" height=\"559\" srcset=\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_02.jpg 1176w, https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_02-300x143.jpg 300w, https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_02-1024x487.jpg 1024w, https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_02-768x365.jpg 768w\" sizes=\"(max-width: 1176px) 100vw, 1176px\" \/><\/p><h1>Practical Example of Message Passing using RabbitMQ<\/h1><p>Develop two console applications: one serving as the producer and the other as the consumer. The producer application will be responsible for sending messages to RabbitMQ, while the consumer application will retrieve those messages.&#8221;<\/p><p>Note: You will need to install a Nuget package <span style=\"color: #ff0000;\">RabbitMQ.client<\/span><\/p><p>Following is the Producer code that produce message:<\/p><p><strong>RabbitMQproducer\/Program.cs <\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b4c282b elementor-widget elementor-widget-code-highlight\" data-id=\"b4c282b\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-php line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-php\">\n\t\t\t\t\t<xmp>using Newtonsoft.Json;\nusing RabbitMQ.Client;\nusing System;\nusing System.Text;\nnamespace RabitMQ.Producer\n{\nstatic class Program\n {\n static void Main(string[] args)\n {\n var factory = new ConnectionFactory()\n {\n Uri = new Uri(\"amqp:\/\/guest:guest@localhost:5672\")\n };\n using var connection = factory.CreateConnection();\n using var channel = connection.CreateModel();\n channel.QueueDeclare(\"demo-queue\",\n durable: true,\n exclusive: false,\n autoDelete: false,\n arguments: null);\n var message = new { Name = \"Producer\", Message = \"Hello!\", Date = \nDateTime.Now };\n var body = \nEncoding.UTF8.GetBytes(JsonConvert.SerializeObject(message));\n channel.BasicPublish(\"\", \"demo-queue\", null, body);\n }\n }<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0ee9469 e-flex e-con-boxed e-con e-parent\" data-id=\"0ee9469\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1f70729 elementor-widget elementor-widget-text-editor\" data-id=\"1f70729\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><strong>ConnectionFactory:<\/strong><\/p><ul><li>An instance of ConnectionFactory is created to configure the RabbitMQ connection parameters. It specifies the URI of the RabbitMQ server (amqp:\/\/guest:guest@localhost:5672).<\/li><\/ul><p><strong>Connection and Channel Creation:<\/strong><\/p><ul><li>Using the connection factory, a connection to the RabbitMQ server is established (CreateConnection()). The using statement ensures that the connection is automatically disposed of when it&#8217;s no longer needed.<\/li><\/ul><ul><li>A channel is created on the connection (CreateModel()), which is used for most of the API calls.<\/li><\/ul><p><strong>Queue Declaration:<\/strong><\/p><ul><li>The QueueDeclare method is used to declare the queue named &#8220;demo-queue&#8221;. It specifies options such as durability, exclusivity, and autodeletion.<\/li><\/ul><p><strong>Message Preparation:<\/strong><\/p><ul><li>A message object is created using an anonymous type with properties for the name of the producer, a message, and the current date\/time.<\/li><li>The message object is serialized to JSON using SerializeObject, and the result is encoded as UTF-8 bytes.<\/li><\/ul><p><strong>Message Publishing:<\/strong><\/p><ul><li>The BasicPublish method sends the serialized message body to the<\/li><\/ul><p>&#8220;demo-queue&#8221;. The &#8220;&#8221; parameter specifies the default exchange, and the &#8220;demo-queue&#8221; parameter specifies the routing key (queue name). The null parameter indicates no message properties are set.<\/p><p><span style=\"font-size: 14.625px;\">Following is the Consumer code that consume message:<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a6abc1c e-flex e-con-boxed e-con e-parent\" data-id=\"a6abc1c\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4f4c3b0 elementor-widget elementor-widget-code-highlight\" data-id=\"4f4c3b0\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-php line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-php\">\n\t\t\t\t\t<xmp>RabbitMQconsumer\/Program.cs\r\nusing Newtonsoft.Json;\r\nusing RabbitMQ.Client;\r\nusing System;\r\nusing System.Text; \r\n\r\nnamespace RabitMQ.Producer \r\n{     \r\nstatic class Program \r\n    {         \r\n      static void Main(string[] args) \r\n        {             \r\n          var factory = new ConnectionFactory() \r\n            { \r\n                Uri = new Uri(\"amqp:\/\/guest:guest@localhost:5672\") \r\n            };\r\n                using var connection = factory.CreateConnection();\r\n             using var channel = connection.CreateModel();\r\n             channel.QueueDeclare(\"demo-queue\",\r\n                 durable: true,\r\n                 exclusive: false,\r\n                 autoDelete: false,\r\n                 arguments: null); \r\n            var message = new { Name = \"Producer\", Message = \"Hello!\", Date = DateTime.Now };\r\n             var body = \r\nEncoding.UTF8.GetBytes(JsonConvert.SerializeObject(message)); \r\n \r\n            channel.BasicPublish(\"\", \"demo-queue\", null, body); \r\n        } \r\n    } \r\n} <\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-471cd33 e-flex e-con-boxed e-con e-parent\" data-id=\"471cd33\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bd120e2 elementor-widget elementor-widget-text-editor\" data-id=\"bd120e2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><strong>ConnectionFactory<\/strong>:<\/p><ul><li>An instance of ConnectionFactory is created to configure the RabbitMQ connection parameters. It specifies the URI of the RabbitMQ server (amqp:\/\/guest:guest@localhost:5672).<\/li><\/ul><p>\u00a0<\/p><p><strong>Connection and Channel Creation:<\/strong><\/p><ul><li>Using the connection factory, a connection to the RabbitMQ server is established (CreateConnection()). The using statement ensures that the connection is automatically disposed of when it&#8217;s no longer needed.<\/li><\/ul><p>\u00a0<\/p><ul><li>A channel is created on the connection (CreateModel()), which is used for most of the API calls.<\/li><\/ul><p>\u00a0<\/p><p><strong>Queue Declaration:<\/strong><\/p><ul><li>The QueueDeclare method is used to declare the queue named &#8220;demo-queue&#8221;. It specifies options such as durability, exclusivity, and autodeletion.<\/li><\/ul><p>\u00a0<\/p><p><strong>EventingBasicConsumer:<\/strong><\/p><ul><li>An instance of EventingBasicConsumer is created, which is a consumer that raises events upon message delivery.<\/li><\/ul><p>\u00a0<\/p><ul><li>The Received event handler is attached to the consumer. When a message is received, the handler extracts the message body, decodes it as a UTF-8 string, and prints it to the console.<\/li><\/ul><p>\u00a0<\/p><p><strong>BasicConsume:<\/strong><\/p><ul><li>The BasicConsume method starts consuming messages from the &#8220;demo-queue&#8221;. It specifies the queue name, whether messages should be acknowledged automatically (true), and the consumer instance to handle received messages.<\/li><\/ul><p>\u00a0<\/p><p><strong>Console.ReadLine:<\/strong><\/p><ul><li>The ReadLine statement keeps the application running so that it continues to listen for messages until the user presses Enter.<\/li><\/ul><p>Now run both the console Applications together and producer application will produce the <strong>HELLO <\/strong>message and consumer application will consume this message through RabbitMQ queue and will print it<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2d63e13 e-flex e-con-boxed e-con e-parent\" data-id=\"2d63e13\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-304156d elementor-widget elementor-widget-text-editor\" data-id=\"304156d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>The pitch in the RabbitMQ demo-queue shows that data has been received successfully in the Queue<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-8db9f2b e-flex e-con-boxed e-con e-parent\" data-id=\"8db9f2b\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ecd0bb0 elementor-widget elementor-widget-image\" data-id=\"ecd0bb0\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"601\" height=\"482\" src=\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_03.jpg\" class=\"attachment-medium_large size-medium_large wp-image-17485\" alt=\"\" srcset=\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_03.jpg 601w, https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_03-300x241.jpg 300w\" sizes=\"(max-width: 601px) 100vw, 601px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2d2a3d8 e-flex e-con-boxed e-con e-parent\" data-id=\"2d2a3d8\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-23a57e8 elementor-widget elementor-widget-text-editor\" data-id=\"23a57e8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>The consumer application has received the data successfully and printed it.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-81e5596 e-flex e-con-boxed e-con e-parent\" data-id=\"81e5596\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7074c9c elementor-widget elementor-widget-image\" data-id=\"7074c9c\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"326\" src=\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_04-768x326.jpg\" class=\"attachment-medium_large size-medium_large wp-image-17486\" alt=\"\" srcset=\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_04-768x326.jpg 768w, https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_04-300x127.jpg 300w, https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_04-1024x435.jpg 1024w, https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_04.jpg 1154w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6966944 e-flex e-con-boxed e-con e-parent\" data-id=\"6966944\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ecfa261 elementor-widget elementor-widget-text-editor\" data-id=\"ecfa261\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<strong><u>What is Mass Transit?<\/u><\/strong>\n\nMassTransit is a free, open-source distributed application framework for .NET. It&#8217;s a service bus for sending messages between different parts of your application, or even across different applications. With MassTransit, you can implement various messaging patterns such as publish\/subscribe, request\/response, and more, using a consistent and easy-to-understand API.\n\n<strong>Key Features:<\/strong>\n<ul>\n \t<li>Message-based Communication<\/li>\n \t<li>Fault Tolerance<\/li>\n \t<li>Scalability<\/li>\n \t<li>Integration Capabilities<\/li>\n<\/ul>\n<h1>Practical Example of Message Passing using MassTransit<\/h1>\n<strong>Getting Started <\/strong>\n<ul>\n \t<li>Creating two Web API projects one as Order Service and other as Inventory Service<\/li>\n \t<li>Order Service will be responsible for sending messages using rabbitMQ as a message broker through Mass Transit.<\/li>\n \t<li>Inventory Service will Consume the Order data from the Queue through Mass Transit<\/li>\n \t<li>Shared Order Model has been created which will be used as a data model.<\/li>\n<\/ul>\n&nbsp;\n<h2>Installation<\/h2>\nInstall the following Nuget packages in your .NET project.\n<ul>\n \t<li>MassTransit<\/li>\n \t<li>AspNetCore<\/li>\n \t<li>RabbitMQ<\/li>\n \t<li>Extensions.DependencyInjection<\/li>\n<\/ul>\n\n1- Configure the RabbitMQ instance in the<strong> Startup.cs<\/strong> class of <strong>OrderService <\/strong>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-67939cc e-flex e-con-boxed e-con e-parent\" data-id=\"67939cc\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fe17776 elementor-widget elementor-widget-image\" data-id=\"fe17776\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"198\" height=\"250\" src=\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_05.jpg\" class=\"attachment-medium_large size-medium_large wp-image-17487\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-99a5b69 e-flex e-con-boxed e-con e-parent\" data-id=\"99a5b69\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-23c4246 elementor-widget elementor-widget-text-editor\" data-id=\"23c4246\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>OrderService\/Startup.cs<\/h3>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c3ade46 e-flex e-con-boxed e-con e-parent\" data-id=\"c3ade46\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-82302ee elementor-widget elementor-widget-code-highlight\" data-id=\"82302ee\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-php line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-php\">\n\t\t\t\t\t<xmp>public void ConfigureServices(IServiceCollection services)\r\n {\r\n services.AddControllers();\r\n services.AddMassTransit(config => {\r\n config.UsingRabbitMq((ctx, cfg) => {\r\n cfg.Host(\"amqp:\/\/guest:guest@localhost:5672\");\r\n });\r\n });\r\n services.AddMassTransitHostedService();\r\n }\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-35fef5e e-flex e-con-boxed e-con e-parent\" data-id=\"35fef5e\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-82a6916 elementor-widget elementor-widget-text-editor\" data-id=\"82a6916\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>2- Create a new Controller&lt;strong&gt; OrderController.cs&lt;\/strong&gt; in Controllers folder.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5f7686c e-flex e-con-boxed e-con e-parent\" data-id=\"5f7686c\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-82a952c elementor-widget elementor-widget-image\" data-id=\"82a952c\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"258\" height=\"196\" src=\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_06.jpg\" class=\"attachment-medium_large size-medium_large wp-image-17488\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3a36d8a e-flex e-con-boxed e-con e-parent\" data-id=\"3a36d8a\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-65d5caa elementor-widget elementor-widget-text-editor\" data-id=\"65d5caa\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>OrderController.cs<\/h3>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a104855 e-flex e-con-boxed e-con e-parent\" data-id=\"a104855\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-953054a elementor-widget elementor-widget-code-highlight\" data-id=\"953054a\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-php line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-php\">\n\t\t\t\t\t<xmp>using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Threading.Tasks;\r\nusing MassTransit;\r\nusing Microsoft.AspNetCore.Mvc;\r\nusing Model;\r\n\/\/ For more information on enabling Web API for empty projects, visit \r\nhttps:\/\/go.microsoft.com\/fwlink\/?LinkID=397860\r\nnamespace OrderService.Controllers\r\n{\r\n [Route(\"api\/[controller]\")]\r\n [ApiController]\r\n public class OrderController : ControllerBase\r\n {\r\n private readonly IPublishEndpoint publishEndpoint;\r\n public OrderController(IPublishEndpoint publishEndpoint)\r\n {\r\n this.publishEndpoint = publishEndpoint;\r\n }\r\n  \/\/ GET: api\/<OrderController>\r\n [HttpGet]\r\n public IEnumerable<string> Get()\r\n {\r\n return new string[] { \"value1\", \"value2\" };\r\n }\r\n \/\/ GET api\/<OrderController>\/5\r\n [HttpGet(\"{id}\")]\r\n public string Get(int id)\r\n {\r\n return \"value\";\r\n }\r\n \/\/ POST api\/<OrderController>\r\n [HttpPost]\r\n public async Task<IActionResult> Post([FromBody] Order order)\r\n {\r\n await publishEndpoint.Publish<Order>(order);\r\n return Ok();\r\n }\r\n \/\/ PUT api\/<OrderController>\/5\r\n [HttpPut(\"{id}\")]\r\n public void Put(int id, [FromBody] string value)\r\n {\r\n }\r\n \/\/ DELETE api\/<OrderController>\/5\r\n [HttpDelete(\"{id}\")]\r\n public void Delete(int id)\r\n {\r\n }\r\n }\r\n}<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-75509c5 e-flex e-con-boxed e-con e-parent\" data-id=\"75509c5\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9c952e6 elementor-widget elementor-widget-text-editor\" data-id=\"9c952e6\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>3- Now for the InventoryService configure the RabbitMQ consumer in Startup.cs of InventoryService.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-cafa4fa e-flex e-con-boxed e-con e-parent\" data-id=\"cafa4fa\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-99876ba elementor-widget elementor-widget-image\" data-id=\"99876ba\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"260\" height=\"328\" src=\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_07.jpg\" class=\"attachment-medium_large size-medium_large wp-image-17489\" alt=\"\" srcset=\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_07.jpg 260w, https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_07-238x300.jpg 238w\" sizes=\"(max-width: 260px) 100vw, 260px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-bebc66f e-flex e-con-boxed e-con e-parent\" data-id=\"bebc66f\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3a3ffa8 elementor-widget elementor-widget-text-editor\" data-id=\"3a3ffa8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>InventoryService\/Startup.cs<\/h3>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f562865 e-flex e-con-boxed e-con e-parent\" data-id=\"f562865\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4e2c125 elementor-widget elementor-widget-code-highlight\" data-id=\"4e2c125\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-php line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-php\">\n\t\t\t\t\t<xmp>public void ConfigureServices(IServiceCollection services)\r\n {\r\n services.AddControllers();\r\n services.AddMassTransit(config => {\r\n config.AddConsumer<OrderConsumer>();\r\n config.UsingRabbitMq((ctx, cfg) => {\r\n cfg.Host(\"amqp:\/\/guest:guest@localhost:5672\");\r\n cfg.ReceiveEndpoint(\"order-queue\", c => {\r\n c.ConfigureConsumer<OrderConsumer>(ctx);\r\n });\r\n });\r\n });\r\n services.AddMassTransitHostedService();\r\n }\r\n <\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5d40e76 e-flex e-con-boxed e-con e-parent\" data-id=\"5d40e76\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e5880be elementor-widget elementor-widget-text-editor\" data-id=\"e5880be\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t4- Add <strong>OrderConsumer.cs <\/strong>class that will be responsible to consume the Order message from the order queue.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1bad4c1 e-flex e-con-boxed e-con e-parent\" data-id=\"1bad4c1\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9ebe03e elementor-widget elementor-widget-image\" data-id=\"9ebe03e\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"514\" height=\"638\" src=\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_08.jpg\" class=\"attachment-medium_large size-medium_large wp-image-17490\" alt=\"\" srcset=\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_08.jpg 514w, https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_08-242x300.jpg 242w\" sizes=\"(max-width: 514px) 100vw, 514px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1d28c6b e-flex e-con-boxed e-con e-parent\" data-id=\"1d28c6b\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-198e7be elementor-widget elementor-widget-text-editor\" data-id=\"198e7be\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>InventoryServie\/OrderConsumer.cs<\/h3>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4fd5e88 e-flex e-con-boxed e-con e-parent\" data-id=\"4fd5e88\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d6c5ecf elementor-widget elementor-widget-code-highlight\" data-id=\"d6c5ecf\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-php line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-php\">\n\t\t\t\t\t<xmp>using MassTransit;\r\nusing Microsoft.Extensions.Logging;\r\nusing Model;\r\nusing System;\r\nusing System.Threading.Tasks;\r\nnamespace InventoryService\r\n{\r\n internal class OrderConsumer : IConsumer<Order>\r\n {\r\n private readonly ILogger<OrderConsumer> logger;\r\n public OrderConsumer(ILogger<OrderConsumer> logger)\r\n {\r\n this.logger = logger;\r\n }\r\n public async Task Consume(ConsumeContext<Order> context)\r\n {\r\n await Console.Out.WriteLineAsync(context.Message.Name);\r\n logger.LogInformation($\"Got new message \r\n{context.Message.Name}\");\r\n }\r\n }\r\n}\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1234a3a e-flex e-con-boxed e-con e-parent\" data-id=\"1234a3a\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3fc66a0 elementor-widget elementor-widget-text-editor\" data-id=\"3fc66a0\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>5- Add shared Order Model Project in both WebAPI projects<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-72bf111 e-flex e-con-boxed e-con e-parent\" data-id=\"72bf111\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0f5ef77 elementor-widget elementor-widget-image\" data-id=\"0f5ef77\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"256\" height=\"104\" src=\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_09.jpg\" class=\"attachment-medium_large size-medium_large wp-image-17491\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-228a22b e-flex e-con-boxed e-con e-parent\" data-id=\"228a22b\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6103ef1 elementor-widget elementor-widget-text-editor\" data-id=\"6103ef1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>Model\/Order.cs<\/h3>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-65728d1 e-flex e-con-boxed e-con e-parent\" data-id=\"65728d1\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-27abf38 elementor-widget elementor-widget-code-highlight\" data-id=\"27abf38\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp>using System;\r\nnamespace Model\r\n{\r\n public class Order\r\n {\r\n public string Name { get; set; }\r\n }\r\n}<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-91789a9 e-flex e-con-boxed e-con e-parent\" data-id=\"91789a9\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ac6ed17 elementor-widget elementor-widget-text-editor\" data-id=\"ac6ed17\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t6- Now Run both the web Applications and make a http POST request from postman sending message in Json format.\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0d99e8e e-flex e-con-boxed e-con e-parent\" data-id=\"0d99e8e\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-09b301d elementor-widget elementor-widget-image\" data-id=\"09b301d\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"163\" src=\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_10-768x163.jpg\" class=\"attachment-medium_large size-medium_large wp-image-17492\" alt=\"\" srcset=\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_10-768x163.jpg 768w, https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_10-300x64.jpg 300w, https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_10-1024x217.jpg 1024w, https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_10.jpg 1308w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a284588 e-flex e-con-boxed e-con e-parent\" data-id=\"a284588\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5dd9f60 elementor-widget elementor-widget-text-editor\" data-id=\"5dd9f60\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t7- The message has been received on RabbitMQ in the form of Model:Order and has been exchanged to Order-queue.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-72657aa e-flex e-con-boxed e-con e-parent\" data-id=\"72657aa\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-32c4fcd elementor-widget elementor-widget-image\" data-id=\"32c4fcd\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"706\" src=\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_11-768x706.jpg\" class=\"attachment-medium_large size-medium_large wp-image-17493\" alt=\"\" srcset=\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_11-768x706.jpg 768w, https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_11-300x276.jpg 300w, https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_11.jpg 778w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7c77732 e-flex e-con-boxed e-con e-parent\" data-id=\"7c77732\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d248220 elementor-widget elementor-widget-text-editor\" data-id=\"d248220\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>8- The consumer has consumed the message from Order-queue and printed the message.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e8465e6 e-flex e-con-boxed e-con e-parent\" data-id=\"e8465e6\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-efdf221 elementor-widget elementor-widget-image\" data-id=\"efdf221\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"332\" src=\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_12-768x332.jpg\" class=\"attachment-medium_large size-medium_large wp-image-17494\" alt=\"\" srcset=\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_12-768x332.jpg 768w, https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_12-300x130.jpg 300w, https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_12-1024x443.jpg 1024w, https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/screen_12.jpg 1137w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-26345b0 e-flex e-con-boxed e-con e-parent\" data-id=\"26345b0\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-aeb3ad5 e-flex e-con-boxed e-con e-parent\" data-id=\"aeb3ad5\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3dddda0 elementor-widget elementor-widget-text-editor\" data-id=\"3dddda0\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: center;\"><strong>Thank You!<\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Introduction: In today&#8217;s distributed system landscape, efficient communication between microservices is crucial for maintaining scalability, reliability, and performance. In this technical blog, we&#8217;ll delve into how Masstransit and RabbitMQ can be combined to streamline communication within microservices architecture. Introduction to RabbitMQ: Overview of RabbitMQ: RabbitMQ is a highly reliable message broker that acts as an [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":17502,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[36],"tags":[],"class_list":["post-17306","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-d365"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Streamlining Communication with Masstransit and RabbitMQ<\/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:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Streamlining Communication with Masstransit and RabbitMQ\" \/>\n<meta property=\"og:description\" content=\"Introduction: In today&#8217;s distributed system landscape, efficient communication between microservices is crucial for maintaining scalability, reliability, and performance. In this technical blog, we&#8217;ll delve into how Masstransit and RabbitMQ can be combined to streamline communication within microservices architecture. Introduction to RabbitMQ: Overview of RabbitMQ: RabbitMQ is a highly reliable message broker that acts as an [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/\" \/>\n<meta property=\"og:site_name\" content=\"Folio3 Dynamics Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-05-14T14:48:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-15T09:24:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/Streamlining-Communication-with-Masstransit-and-RabbitMQ.png\" \/>\n\t<meta property=\"og:image:width\" content=\"850\" \/>\n\t<meta property=\"og:image:height\" content=\"560\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Folio3 Microsoft Dynamics Partner\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@folio_3\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Abdul Basit Imam &amp; Mohsin Aqee\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/\"},\"author\":{\"name\":\"Folio3 Microsoft Dynamics Partner\",\"@id\":\"https:\/\/dynamics.folio3.com\/blog\/#\/schema\/person\/f7d38b88c941636642e7a9ecf91c20b4\"},\"headline\":\"Streamlining Communication with Masstransit and RabbitMQ\",\"datePublished\":\"2024-05-14T14:48:18+00:00\",\"dateModified\":\"2024-05-15T09:24:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/\"},\"wordCount\":1147,\"publisher\":{\"@id\":\"https:\/\/dynamics.folio3.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/Streamlining-Communication-with-Masstransit-and-RabbitMQ.png\",\"articleSection\":[\"D365\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/\",\"url\":\"https:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/\",\"name\":\"Streamlining Communication with Masstransit and RabbitMQ\",\"isPartOf\":{\"@id\":\"https:\/\/dynamics.folio3.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/Streamlining-Communication-with-Masstransit-and-RabbitMQ.png\",\"datePublished\":\"2024-05-14T14:48:18+00:00\",\"dateModified\":\"2024-05-15T09:24:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/#primaryimage\",\"url\":\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/Streamlining-Communication-with-Masstransit-and-RabbitMQ.png\",\"contentUrl\":\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/Streamlining-Communication-with-Masstransit-and-RabbitMQ.png\",\"width\":850,\"height\":560},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog\",\"item\":\"https:\/\/dynamics.folio3.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Streamlining Communication with Masstransit and RabbitMQ\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/dynamics.folio3.com\/blog\/#website\",\"url\":\"https:\/\/dynamics.folio3.com\/blog\/\",\"name\":\"Folio3 Dynamics Blog\",\"description\":\"News, Guides and Info from the world of Microsoft Dynamics\",\"publisher\":{\"@id\":\"https:\/\/dynamics.folio3.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/dynamics.folio3.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/dynamics.folio3.com\/blog\/#organization\",\"name\":\"Folio3\",\"url\":\"https:\/\/dynamics.folio3.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/dynamics.folio3.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2022\/01\/footer-logo.png\",\"contentUrl\":\"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2022\/01\/footer-logo.png\",\"width\":154,\"height\":100,\"caption\":\"Folio3\"},\"image\":{\"@id\":\"https:\/\/dynamics.folio3.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/dynamics.folio3.com\/blog\/#\/schema\/person\/f7d38b88c941636642e7a9ecf91c20b4\",\"name\":\"Folio3 Microsoft Dynamics Partner\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/dynamics.folio3.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/29f05a21b8db20048e7717694b024bbd?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/29f05a21b8db20048e7717694b024bbd?s=96&d=mm&r=g\",\"caption\":\"Folio3 Microsoft Dynamics Partner\"},\"description\":\"Top Microsoft Dynamics partner with 300+ Projects completed worldwide since 2001. Delivering a single point solution tailored to your business needs.\",\"sameAs\":[\"https:\/\/x.com\/folio_3\"],\"url\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Streamlining Communication with Masstransit and RabbitMQ","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:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/","og_locale":"en_US","og_type":"article","og_title":"Streamlining Communication with Masstransit and RabbitMQ","og_description":"Introduction: In today&#8217;s distributed system landscape, efficient communication between microservices is crucial for maintaining scalability, reliability, and performance. In this technical blog, we&#8217;ll delve into how Masstransit and RabbitMQ can be combined to streamline communication within microservices architecture. Introduction to RabbitMQ: Overview of RabbitMQ: RabbitMQ is a highly reliable message broker that acts as an [&hellip;]","og_url":"https:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/","og_site_name":"Folio3 Dynamics Blog","article_published_time":"2024-05-14T14:48:18+00:00","article_modified_time":"2024-05-15T09:24:51+00:00","og_image":[{"width":850,"height":560,"url":"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/Streamlining-Communication-with-Masstransit-and-RabbitMQ.png","type":"image\/png"}],"author":"Folio3 Microsoft Dynamics Partner","twitter_card":"summary_large_image","twitter_creator":"@folio_3","twitter_misc":{"Written by":"Abdul Basit Imam &amp; Mohsin Aqee","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/#article","isPartOf":{"@id":"https:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/"},"author":{"name":"Folio3 Microsoft Dynamics Partner","@id":"https:\/\/dynamics.folio3.com\/blog\/#\/schema\/person\/f7d38b88c941636642e7a9ecf91c20b4"},"headline":"Streamlining Communication with Masstransit and RabbitMQ","datePublished":"2024-05-14T14:48:18+00:00","dateModified":"2024-05-15T09:24:51+00:00","mainEntityOfPage":{"@id":"https:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/"},"wordCount":1147,"publisher":{"@id":"https:\/\/dynamics.folio3.com\/blog\/#organization"},"image":{"@id":"https:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/#primaryimage"},"thumbnailUrl":"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/Streamlining-Communication-with-Masstransit-and-RabbitMQ.png","articleSection":["D365"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/","url":"https:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/","name":"Streamlining Communication with Masstransit and RabbitMQ","isPartOf":{"@id":"https:\/\/dynamics.folio3.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/#primaryimage"},"image":{"@id":"https:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/#primaryimage"},"thumbnailUrl":"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/Streamlining-Communication-with-Masstransit-and-RabbitMQ.png","datePublished":"2024-05-14T14:48:18+00:00","dateModified":"2024-05-15T09:24:51+00:00","breadcrumb":{"@id":"https:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/#primaryimage","url":"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/Streamlining-Communication-with-Masstransit-and-RabbitMQ.png","contentUrl":"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2024\/05\/Streamlining-Communication-with-Masstransit-and-RabbitMQ.png","width":850,"height":560},{"@type":"BreadcrumbList","@id":"https:\/\/dynamics.folio3.com\/blog\/streamlining-communication-with-masstransit-and-rabbitmq\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog","item":"https:\/\/dynamics.folio3.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Streamlining Communication with Masstransit and RabbitMQ"}]},{"@type":"WebSite","@id":"https:\/\/dynamics.folio3.com\/blog\/#website","url":"https:\/\/dynamics.folio3.com\/blog\/","name":"Folio3 Dynamics Blog","description":"News, Guides and Info from the world of Microsoft Dynamics","publisher":{"@id":"https:\/\/dynamics.folio3.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dynamics.folio3.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/dynamics.folio3.com\/blog\/#organization","name":"Folio3","url":"https:\/\/dynamics.folio3.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dynamics.folio3.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2022\/01\/footer-logo.png","contentUrl":"https:\/\/dynamics.folio3.com\/blog\/wp-content\/uploads\/2022\/01\/footer-logo.png","width":154,"height":100,"caption":"Folio3"},"image":{"@id":"https:\/\/dynamics.folio3.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/dynamics.folio3.com\/blog\/#\/schema\/person\/f7d38b88c941636642e7a9ecf91c20b4","name":"Folio3 Microsoft Dynamics Partner","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dynamics.folio3.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/29f05a21b8db20048e7717694b024bbd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/29f05a21b8db20048e7717694b024bbd?s=96&d=mm&r=g","caption":"Folio3 Microsoft Dynamics Partner"},"description":"Top Microsoft Dynamics partner with 300+ Projects completed worldwide since 2001. Delivering a single point solution tailored to your business needs.","sameAs":["https:\/\/x.com\/folio_3"],"url":""}]}},"_links":{"self":[{"href":"https:\/\/dynamics.folio3.com\/blog\/wp-json\/wp\/v2\/posts\/17306","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dynamics.folio3.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dynamics.folio3.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dynamics.folio3.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/dynamics.folio3.com\/blog\/wp-json\/wp\/v2\/comments?post=17306"}],"version-history":[{"count":0,"href":"https:\/\/dynamics.folio3.com\/blog\/wp-json\/wp\/v2\/posts\/17306\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dynamics.folio3.com\/blog\/wp-json\/wp\/v2\/media\/17502"}],"wp:attachment":[{"href":"https:\/\/dynamics.folio3.com\/blog\/wp-json\/wp\/v2\/media?parent=17306"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dynamics.folio3.com\/blog\/wp-json\/wp\/v2\/categories?post=17306"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dynamics.folio3.com\/blog\/wp-json\/wp\/v2\/tags?post=17306"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}