From 96f7dac64203111a2081c5a27abd0296a807eb81 Mon Sep 17 00:00:00 2001 From: Dave Tillman Date: Tue, 9 May 2023 06:38:59 -0600 Subject: [PATCH] Initial RabbitMQ Tutorial commit (#288) --- Messaging/src/Tutorials/Tutorial1/Readme.md | 379 ++++++++++++++ .../Tutorials/Tutorial1/Receiver/Program.cs | 29 ++ .../Tutorial1/Receiver/Receiver.csproj | 15 + .../Tutorial1/Receiver/Tut1Receiver.cs | 21 + .../src/Tutorials/Tutorial1/Sender/Program.cs | 25 + .../Sender/Properties/launchSettings.json | 11 + .../Tutorials/Tutorial1/Sender/Sender.csproj | 14 + .../Tutorials/Tutorial1/Sender/Tut1Sender.cs | 26 + .../Sender/appsettings.Development.json | 8 + .../Tutorial1/Sender/appsettings.json | 8 + .../src/Tutorials/Tutorial1/Tutorial1.sln | 31 ++ Messaging/src/Tutorials/Tutorial2/Readme.md | 389 +++++++++++++++ .../Tutorials/Tutorial2/Receiver/Program.cs | 23 + .../Tutorial2/Receiver/Receiver.csproj | 15 + .../Tutorial2/Receiver/Tut2Receiver.cs | 40 ++ .../src/Tutorials/Tutorial2/Sender/Program.cs | 18 + .../Sender/Properties/launchSettings.json | 11 + .../Tutorials/Tutorial2/Sender/Sender.csproj | 14 + .../Tutorials/Tutorial2/Sender/Tut2Sender.cs | 49 ++ .../Sender/appsettings.Development.json | 8 + .../Tutorial2/Sender/appsettings.json | 8 + .../src/Tutorials/Tutorial2/Tutorial2.sln | 31 ++ Messaging/src/Tutorials/Tutorial3/Readme.md | 433 ++++++++++++++++ .../Tutorials/Tutorial3/Receiver/Program.cs | 24 + .../Tutorial3/Receiver/Receiver.csproj | 15 + .../Tutorial3/Receiver/Tut3Receiver.cs | 58 +++ .../src/Tutorials/Tutorial3/Sender/Program.cs | 17 + .../Sender/Properties/launchSettings.json | 11 + .../Tutorials/Tutorial3/Sender/Sender.csproj | 14 + .../Tutorials/Tutorial3/Sender/Tut3Sender.cs | 49 ++ .../Sender/appsettings.Development.json | 8 + .../Tutorial3/Sender/appsettings.json | 8 + .../src/Tutorials/Tutorial3/Tutorial3.sln | 31 ++ Messaging/src/Tutorials/Tutorial4/Readme.md | 305 ++++++++++++ .../Tutorials/Tutorial4/Receiver/Program.cs | 24 + .../Tutorial4/Receiver/Receiver.csproj | 15 + .../Tutorial4/Receiver/Tut4Receiver.cs | 59 +++ .../src/Tutorials/Tutorial4/Sender/Program.cs | 17 + .../Sender/Properties/launchSettings.json | 11 + .../Tutorials/Tutorial4/Sender/Sender.csproj | 15 + .../Tutorials/Tutorial4/Sender/Tut4Sender.cs | 46 ++ .../Sender/appsettings.Development.json | 8 + .../Tutorial4/Sender/appsettings.json | 8 + .../src/Tutorials/Tutorial4/Tutorial4.sln | 31 ++ Messaging/src/Tutorials/Tutorial5/Readme.md | 299 +++++++++++ .../Tutorials/Tutorial5/Receiver/Program.cs | 25 + .../Tutorial5/Receiver/Receiver.csproj | 13 + .../Tutorial5/Receiver/Tut5Receiver.cs | 59 +++ .../src/Tutorials/Tutorial5/Sender/Program.cs | 17 + .../Sender/Properties/launchSettings.json | 11 + .../Tutorials/Tutorial5/Sender/Sender.csproj | 14 + .../Tutorials/Tutorial5/Sender/Tut5Sender.cs | 52 ++ .../Sender/appsettings.Development.json | 8 + .../Tutorial5/Sender/appsettings.json | 8 + .../src/Tutorials/Tutorial5/Tutorial5.sln | 31 ++ Messaging/src/Tutorials/Tutorial6/Readme.md | 302 +++++++++++ .../Tutorials/Tutorial6/Receiver/Program.cs | 24 + .../Tutorial6/Receiver/Receiver.csproj | 13 + .../Tutorial6/Receiver/Tut6Receiver.cs | 34 ++ .../src/Tutorials/Tutorial6/Sender/Program.cs | 16 + .../Sender/Properties/launchSettings.json | 11 + .../Tutorials/Tutorial6/Sender/Sender.csproj | 14 + .../Tutorials/Tutorial6/Sender/Tut6Sender.cs | 30 ++ .../Sender/appsettings.Development.json | 8 + .../Tutorial6/Sender/appsettings.json | 8 + .../src/Tutorials/Tutorial6/Tutorial6.sln | 31 ++ Messaging/src/Tutorials/Tutorial7/Readme.md | 470 ++++++++++++++++++ .../Tutorials/Tutorial7/Receiver/Program.cs | 28 ++ .../Tutorial7/Receiver/Receiver.csproj | 13 + .../Tutorial7/Receiver/Tut7Receiver.cs | 26 + .../src/Tutorials/Tutorial7/Sender/Program.cs | 37 ++ .../Sender/Properties/launchSettings.json | 11 + .../Tutorials/Tutorial7/Sender/Sender.csproj | 14 + .../Tutorials/Tutorial7/Sender/Tut7Sender.cs | 45 ++ .../Sender/appsettings.Development.json | 8 + .../Tutorial7/Sender/appsettings.json | 8 + .../src/Tutorials/Tutorial7/Tutorial7.sln | 31 ++ .../img/tutorials/VS2022NewConsoleApp.png | Bin 0 -> 45628 bytes .../VS2022NewConsoleAppConfigureProject.png | Bin 0 -> 17931 bytes .../img/tutorials/VS2022NewWorkService.png | Bin 0 -> 41391 bytes .../VS2022NewWorkServiceConfigure.png | Bin 0 -> 18338 bytes .../img/tutorials/VS2022Solution.png | Bin 0 -> 37376 bytes .../src/Tutorials/img/tutorials/bindings.png | Bin 0 -> 5785 bytes .../src/Tutorials/img/tutorials/consumer.png | Bin 0 -> 2176 bytes .../tutorials/direct-exchange-multiple.png | Bin 0 -> 9689 bytes .../img/tutorials/direct-exchange.png | Bin 0 -> 10742 bytes .../src/Tutorials/img/tutorials/exchanges.png | Bin 0 -> 5555 bytes .../tutorials/intro/exchange-declare-ok.png | Bin 0 -> 29116 bytes .../img/tutorials/intro/exchange-declare.png | Bin 0 -> 38380 bytes .../img/tutorials/intro/exchange-direct.png | Bin 0 -> 122720 bytes .../img/tutorials/intro/exchange-fanout.png | Bin 0 -> 75120 bytes .../intro/hello-world-example-routing.png | Bin 0 -> 40772 bytes .../img/tutorials/intro/queue-declare-ok.png | Bin 0 -> 41383 bytes .../img/tutorials/intro/queue-declare.png | Bin 0 -> 33391 bytes .../img/tutorials/prefetch-count.png | Bin 0 -> 8418 bytes .../src/Tutorials/img/tutorials/producer.png | Bin 0 -> 1558 bytes .../Tutorials/img/tutorials/python-five.png | Bin 0 -> 11049 bytes .../Tutorials/img/tutorials/python-four.png | Bin 0 -> 11851 bytes .../img/tutorials/python-one-overall.png | Bin 0 -> 4274 bytes .../Tutorials/img/tutorials/python-one.png | Bin 0 -> 5112 bytes .../Tutorials/img/tutorials/python-six.png | Bin 0 -> 14454 bytes .../img/tutorials/python-three-overall.png | Bin 0 -> 8640 bytes .../Tutorials/img/tutorials/python-three.png | Bin 0 -> 9976 bytes .../Tutorials/img/tutorials/python-two.png | Bin 0 -> 7450 bytes .../src/Tutorials/img/tutorials/queue.png | Bin 0 -> 885 bytes .../src/Tutorials/img/tutorials/receiving.png | Bin 0 -> 2760 bytes .../src/Tutorials/img/tutorials/sending.png | Bin 0 -> 2426 bytes 107 files changed, 4099 insertions(+) create mode 100644 Messaging/src/Tutorials/Tutorial1/Readme.md create mode 100644 Messaging/src/Tutorials/Tutorial1/Receiver/Program.cs create mode 100644 Messaging/src/Tutorials/Tutorial1/Receiver/Receiver.csproj create mode 100644 Messaging/src/Tutorials/Tutorial1/Receiver/Tut1Receiver.cs create mode 100644 Messaging/src/Tutorials/Tutorial1/Sender/Program.cs create mode 100644 Messaging/src/Tutorials/Tutorial1/Sender/Properties/launchSettings.json create mode 100644 Messaging/src/Tutorials/Tutorial1/Sender/Sender.csproj create mode 100644 Messaging/src/Tutorials/Tutorial1/Sender/Tut1Sender.cs create mode 100644 Messaging/src/Tutorials/Tutorial1/Sender/appsettings.Development.json create mode 100644 Messaging/src/Tutorials/Tutorial1/Sender/appsettings.json create mode 100644 Messaging/src/Tutorials/Tutorial1/Tutorial1.sln create mode 100644 Messaging/src/Tutorials/Tutorial2/Readme.md create mode 100644 Messaging/src/Tutorials/Tutorial2/Receiver/Program.cs create mode 100644 Messaging/src/Tutorials/Tutorial2/Receiver/Receiver.csproj create mode 100644 Messaging/src/Tutorials/Tutorial2/Receiver/Tut2Receiver.cs create mode 100644 Messaging/src/Tutorials/Tutorial2/Sender/Program.cs create mode 100644 Messaging/src/Tutorials/Tutorial2/Sender/Properties/launchSettings.json create mode 100644 Messaging/src/Tutorials/Tutorial2/Sender/Sender.csproj create mode 100644 Messaging/src/Tutorials/Tutorial2/Sender/Tut2Sender.cs create mode 100644 Messaging/src/Tutorials/Tutorial2/Sender/appsettings.Development.json create mode 100644 Messaging/src/Tutorials/Tutorial2/Sender/appsettings.json create mode 100644 Messaging/src/Tutorials/Tutorial2/Tutorial2.sln create mode 100644 Messaging/src/Tutorials/Tutorial3/Readme.md create mode 100644 Messaging/src/Tutorials/Tutorial3/Receiver/Program.cs create mode 100644 Messaging/src/Tutorials/Tutorial3/Receiver/Receiver.csproj create mode 100644 Messaging/src/Tutorials/Tutorial3/Receiver/Tut3Receiver.cs create mode 100644 Messaging/src/Tutorials/Tutorial3/Sender/Program.cs create mode 100644 Messaging/src/Tutorials/Tutorial3/Sender/Properties/launchSettings.json create mode 100644 Messaging/src/Tutorials/Tutorial3/Sender/Sender.csproj create mode 100644 Messaging/src/Tutorials/Tutorial3/Sender/Tut3Sender.cs create mode 100644 Messaging/src/Tutorials/Tutorial3/Sender/appsettings.Development.json create mode 100644 Messaging/src/Tutorials/Tutorial3/Sender/appsettings.json create mode 100644 Messaging/src/Tutorials/Tutorial3/Tutorial3.sln create mode 100644 Messaging/src/Tutorials/Tutorial4/Readme.md create mode 100644 Messaging/src/Tutorials/Tutorial4/Receiver/Program.cs create mode 100644 Messaging/src/Tutorials/Tutorial4/Receiver/Receiver.csproj create mode 100644 Messaging/src/Tutorials/Tutorial4/Receiver/Tut4Receiver.cs create mode 100644 Messaging/src/Tutorials/Tutorial4/Sender/Program.cs create mode 100644 Messaging/src/Tutorials/Tutorial4/Sender/Properties/launchSettings.json create mode 100644 Messaging/src/Tutorials/Tutorial4/Sender/Sender.csproj create mode 100644 Messaging/src/Tutorials/Tutorial4/Sender/Tut4Sender.cs create mode 100644 Messaging/src/Tutorials/Tutorial4/Sender/appsettings.Development.json create mode 100644 Messaging/src/Tutorials/Tutorial4/Sender/appsettings.json create mode 100644 Messaging/src/Tutorials/Tutorial4/Tutorial4.sln create mode 100644 Messaging/src/Tutorials/Tutorial5/Readme.md create mode 100644 Messaging/src/Tutorials/Tutorial5/Receiver/Program.cs create mode 100644 Messaging/src/Tutorials/Tutorial5/Receiver/Receiver.csproj create mode 100644 Messaging/src/Tutorials/Tutorial5/Receiver/Tut5Receiver.cs create mode 100644 Messaging/src/Tutorials/Tutorial5/Sender/Program.cs create mode 100644 Messaging/src/Tutorials/Tutorial5/Sender/Properties/launchSettings.json create mode 100644 Messaging/src/Tutorials/Tutorial5/Sender/Sender.csproj create mode 100644 Messaging/src/Tutorials/Tutorial5/Sender/Tut5Sender.cs create mode 100644 Messaging/src/Tutorials/Tutorial5/Sender/appsettings.Development.json create mode 100644 Messaging/src/Tutorials/Tutorial5/Sender/appsettings.json create mode 100644 Messaging/src/Tutorials/Tutorial5/Tutorial5.sln create mode 100644 Messaging/src/Tutorials/Tutorial6/Readme.md create mode 100644 Messaging/src/Tutorials/Tutorial6/Receiver/Program.cs create mode 100644 Messaging/src/Tutorials/Tutorial6/Receiver/Receiver.csproj create mode 100644 Messaging/src/Tutorials/Tutorial6/Receiver/Tut6Receiver.cs create mode 100644 Messaging/src/Tutorials/Tutorial6/Sender/Program.cs create mode 100644 Messaging/src/Tutorials/Tutorial6/Sender/Properties/launchSettings.json create mode 100644 Messaging/src/Tutorials/Tutorial6/Sender/Sender.csproj create mode 100644 Messaging/src/Tutorials/Tutorial6/Sender/Tut6Sender.cs create mode 100644 Messaging/src/Tutorials/Tutorial6/Sender/appsettings.Development.json create mode 100644 Messaging/src/Tutorials/Tutorial6/Sender/appsettings.json create mode 100644 Messaging/src/Tutorials/Tutorial6/Tutorial6.sln create mode 100644 Messaging/src/Tutorials/Tutorial7/Readme.md create mode 100644 Messaging/src/Tutorials/Tutorial7/Receiver/Program.cs create mode 100644 Messaging/src/Tutorials/Tutorial7/Receiver/Receiver.csproj create mode 100644 Messaging/src/Tutorials/Tutorial7/Receiver/Tut7Receiver.cs create mode 100644 Messaging/src/Tutorials/Tutorial7/Sender/Program.cs create mode 100644 Messaging/src/Tutorials/Tutorial7/Sender/Properties/launchSettings.json create mode 100644 Messaging/src/Tutorials/Tutorial7/Sender/Sender.csproj create mode 100644 Messaging/src/Tutorials/Tutorial7/Sender/Tut7Sender.cs create mode 100644 Messaging/src/Tutorials/Tutorial7/Sender/appsettings.Development.json create mode 100644 Messaging/src/Tutorials/Tutorial7/Sender/appsettings.json create mode 100644 Messaging/src/Tutorials/Tutorial7/Tutorial7.sln create mode 100644 Messaging/src/Tutorials/img/tutorials/VS2022NewConsoleApp.png create mode 100644 Messaging/src/Tutorials/img/tutorials/VS2022NewConsoleAppConfigureProject.png create mode 100644 Messaging/src/Tutorials/img/tutorials/VS2022NewWorkService.png create mode 100644 Messaging/src/Tutorials/img/tutorials/VS2022NewWorkServiceConfigure.png create mode 100644 Messaging/src/Tutorials/img/tutorials/VS2022Solution.png create mode 100644 Messaging/src/Tutorials/img/tutorials/bindings.png create mode 100644 Messaging/src/Tutorials/img/tutorials/consumer.png create mode 100644 Messaging/src/Tutorials/img/tutorials/direct-exchange-multiple.png create mode 100644 Messaging/src/Tutorials/img/tutorials/direct-exchange.png create mode 100644 Messaging/src/Tutorials/img/tutorials/exchanges.png create mode 100644 Messaging/src/Tutorials/img/tutorials/intro/exchange-declare-ok.png create mode 100644 Messaging/src/Tutorials/img/tutorials/intro/exchange-declare.png create mode 100644 Messaging/src/Tutorials/img/tutorials/intro/exchange-direct.png create mode 100644 Messaging/src/Tutorials/img/tutorials/intro/exchange-fanout.png create mode 100644 Messaging/src/Tutorials/img/tutorials/intro/hello-world-example-routing.png create mode 100644 Messaging/src/Tutorials/img/tutorials/intro/queue-declare-ok.png create mode 100644 Messaging/src/Tutorials/img/tutorials/intro/queue-declare.png create mode 100644 Messaging/src/Tutorials/img/tutorials/prefetch-count.png create mode 100644 Messaging/src/Tutorials/img/tutorials/producer.png create mode 100644 Messaging/src/Tutorials/img/tutorials/python-five.png create mode 100644 Messaging/src/Tutorials/img/tutorials/python-four.png create mode 100644 Messaging/src/Tutorials/img/tutorials/python-one-overall.png create mode 100644 Messaging/src/Tutorials/img/tutorials/python-one.png create mode 100644 Messaging/src/Tutorials/img/tutorials/python-six.png create mode 100644 Messaging/src/Tutorials/img/tutorials/python-three-overall.png create mode 100644 Messaging/src/Tutorials/img/tutorials/python-three.png create mode 100644 Messaging/src/Tutorials/img/tutorials/python-two.png create mode 100644 Messaging/src/Tutorials/img/tutorials/queue.png create mode 100644 Messaging/src/Tutorials/img/tutorials/receiving.png create mode 100644 Messaging/src/Tutorials/img/tutorials/sending.png diff --git a/Messaging/src/Tutorials/Tutorial1/Readme.md b/Messaging/src/Tutorials/Tutorial1/Readme.md new file mode 100644 index 00000000..86781c4c --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial1/Readme.md @@ -0,0 +1,379 @@ +# RabbitMQ Tutorial - "Hello World!" + +## Introduction + +> #### Prerequisites +> This tutorial assumes RabbitMQ is [downloaded](https://www.rabbitmq.com/download.html) and installed and running +> on `localhost` on the [standard port](https://www.rabbitmq.com/networking.html#ports) (`5672`). +> +> In case you use a different host, port or credentials, connections settings would require adjusting. +> +> #### Where to get help +> If you're having trouble going through this tutorial you can contact us through Github issues on our +> [Steeltoe Samples Repository](https://github.com/SteeltoeOSS/Samples). + + +RabbitMQ is a message **broker**; it accepts and forwards messages. + +You can think of it as a post office; when you put the mail that you want sent in a post office box, +you can be sure that the letter carrier will eventually deliver the mail to your recipient. + +In this analogy, RabbitMQ is a post office box, a post office, and a letter carrier. + +The major difference between RabbitMQ and the post office is that it doesn't deal with paper, +instead it accepts, stores, and forwards binary blobs of data ‒ **messages**. + +RabbitMQ, and messaging in general, use some jargon as follows: + + - **Producing** means nothing more than sending a message. A program that sends messages is a **producer**. In these tutorials we use the symbol below to represent a **producer**. +

+ +

+ + - **A queue** is the name for the post office box in RabbitMQ. Although messages flow through RabbitMQ and your applications, they can only be stored inside a **queue**. + A **queue** is only bound by the host's memory & disk limits, it's essentially a large message buffer. + Many **producers** can send messages that go to one queue, and many **consumers** can try to receive data from a single **queue**. We use the symbol below to represent a **queue**. + +

+ +

+ + - **Consuming** has a similar meaning to receiving a message. A **consumer** is a program that mostly waits to receive messages. We use the symbol below to represent a **consumer** +

+ +

+ +Note that the **producer**, **consumer**, and **broker** do not have to reside on the same host; indeed in most applications they don't. +An application can be both a **producer** and **consumer**, at the same time. + +## "Hello World" (using Steeltoe) + +In this part of the tutorial we'll write two programs using the Steeltoe Messaging framework; +a **producer** that sends a single message, and a **consumer** that receives +messages and prints them out. We'll gloss over some of the details in +the Steeltoe API, concentrating on this very simple thing just to get +started. It's a "Hello World" of messaging. + +In the diagram below, "P" is our **producer** and "C" is our **consumer**. The +box in the middle is a queue - a message buffer that RabbitMQ keeps +on behalf of the **consumer**. + +

+ +

+ + ### The Steeltoe Messaging Framework + + RabbitMQ speaks multiple protocols and message formats. This tutorial and the others in this series use AMQP 0-9-1, which is an open, general-purpose protocol for messaging. + + There are a number of different clients for RabbitMQ supporting + [many different languages and libraries](http://rabbitmq.com/devtools.html). + +In this tutorial, we'll be using .NET Core and the C# language. In addition we will be using the Steeltoe +Messaging library to help simplify writing messaging applications in .NET. + +We have also chosen to use Visual Studio 2022 to edit and build the project; but we could have chosen VSCode as well. + +The [source code of the project](https://github.com/steeltoeoss/samples/tree/main/messaging/tutorials) +is available online. You can either just run the finished tutorials or you can do the tutorials from scratch by following the steps outlined in each of tutorials writeup. + +If you choose to start from scratch, open Visual Studio and create a new **Console** application using the VS2022 template: + +

+ New ConsoleApp +

+ +Name the project `Receiver` and select a directory location such as `c:\\workspace\\Tutorials`. + +Choose a solution name of Tutorial1 and uncheck the `Place solution and project in the same directory` as you will be adding another project to this solution next. + +

+ Configure Project +

+ +Next add another project to the solution. Choose a **Worker Service** project type this time: + +

+ New Worker Service +

+ +Name this project `Sender` and select the same directory location and solution name you picked earlier. + +

+ New Worker Service Configure +

+ +When you are done with the above, add a new class to the `Receiver` project. + +Name this class `Tut1Receiver`; this will be the class we use to receive messages from the sender. + +Next, in the `Sender` project, rename the `Worker.cs` file to `Tut1Sender.cs`. + +Finally, in both of the project `.csproj` files add the Steeltoe RabbitMQ Messaging package reference: + +```xml + +``` + +After these changes your solution should look something like the following: + +

+ New Worker Service Configure +

+ +## Configuring the Projects + +Steeltoe Messaging offers numerous features you can use to tailor your messaging application, but in this tutorial we only highlight a few that help us get our application up and running with a minimal amount of code. + +First, Steeltoe RabbitMQ Messaging applications have the option of using the `RabbitMQHost` to setup and configure the .NET `Host` used to run the application. The `RabbitMQHost` is a simple host that is configured and behaves just like the [.NET Core Generic Host](https://learn.microsoft.com/en-us/dotnet/core/extensions/generic-host) but also configures the service container with all the Steeltoe components required to send and receive messages with RabbitMQ. + +Specifically it adds and configures the following services: + + - `RabbitTemplate` - used to send (i.e. **producer**) and receive (i.e. **consumer**) messages. + - `RabbitAdmin` - used to administer (i.e. create, delete, update, etc.) RabbitMQ entities (i.e. Queues, Exchanges, Bindings, etc.). At startup the the RabbitAdmin looks for any RabbitMQ entities defined in the service container and attempts to define them in the broker. + - `RabbitListener Attribute processor` - processes all `RabbitListener` attributes and creates RabbitContainers (i.e.**consumers**) for each listener. + - `Rabbit Container Factory` - a component used to create and manage all the RabbitContainers (i.e.**consumers**) in the application + - `Rabbit Message Converter` - a component used to translate .NET objects to a byte stream to be sent and received. Defaults to .NET serialization, but can be easily changed to use `json`. + - `Caching Connection Factory` - used to create and cache connections to the RabbitMQ broker. All of the above components use it when interacting with the broker. By default it is configured to use `localhost` and port (`5672`). + +Throughout the tutorials we will explain how all the above components come into play when building and running a messaging application. + +To get started lets change the `Program.cs` file for the `Receiver` project. Specifically, lets use the `RabbitMQHost.CreateDefaultBuilder(args)` method to create a RabbitMQ host. + +```csharp +// Create a default RabbitMQ host builder +RabbitMQHost.CreateDefaultBuilder(args) +``` + +Next use the `.ConfigureServices()` method on the builder to further configure the services in the host. + +First use the Steeltoe extension method `.AddRabbitQueue(...)` to configure a `Queue` in the service container. We do this so that the `RabbitAdmin` that has been added to the service container for you will find it and at startup use it to create and configure the queue for us on the broker when the application starts up. + +```csharp +// Add queue to service container to be declared at startup +services.AddRabbitQueue(new Queue(QueueName)); +``` + +Next configure `Tut1Receiver`. This is the component that will process messages received on the queue we configured above. This is done by adding `Tut1Receiver` as a singleton in the service container and then also configuring Steeltoe messaging to recognize the class as a `RabbitListener`. As a result, in the background, the Steeltoe `RabbitListener Attribute processor` and the `Rabbit Container factory` mentioned above use this information and more to create a `RabbitContainer` (i.e. **consumer**) that consumes messages from the queue and invokes methods in the class (e.g. `Tut1Receiver`) to process it. +Note, at this point we have not explained how to tie together a queue, `Tut1Receiver` and the method; that comes next. + +```csharp + +// Add the rabbit listener component +services.AddSingleton(); + +// Tell Steeltoe the component is a listener +services.AddRabbitListeners(); +``` + + +When your done, the `Program.cs` file for the `Receiver` project looks as follows: + + +```csharp +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Steeltoe.Messaging.RabbitMQ.Config; +using Steeltoe.Messaging.RabbitMQ.Extensions; +using Steeltoe.Messaging.RabbitMQ.Host; + +namespace Receiver +{ + internal class Program + { + internal const string QueueName = "hello"; + + static void Main(string[] args) + { + RabbitMQHost.CreateDefaultBuilder(args) + .ConfigureServices((hostContext, services) => + { + // Add queue to service container to be declared + services.AddRabbitQueue(new Queue(QueueName)); + + // Add the rabbit listener + services.AddSingleton(); + services.AddRabbitListeners(); + }) + .Build() + .Run(); + } + } +} +``` + +Next we'll change the `Program.cs` file for the `Sender` project. + +Use the `RabbitMQHost.CreateDefaultBuilder(args)` method as well to create a RabbitMQ host in the Sender. Also add the `Queue` into the service container so it gets declared in the broker. This allows us to start either the sender or the receiver and regardless of which one starts first, the queue gets declared in the broker. + +With these changes done, the `Program.cs` file for the `Sender` project looks as follows: + + +```csharp +using Steeltoe.Messaging.RabbitMQ.Config; +using Steeltoe.Messaging.RabbitMQ.Extensions; +using Steeltoe.Messaging.RabbitMQ.Host; + +namespace Sender +{ + public class Program + { + // The name of the queue that will be created + internal const string QueueName = "hello"; + + public static void Main(string[] args) + { + RabbitMQHost.CreateDefaultBuilder(args) + .ConfigureServices(services => + { + // Add queue to service container to be declared + services.AddRabbitQueue(new Queue(QueueName)); + + services.AddHostedService(); + }) + .Build() + .Run(); + } + } +} +``` + + +## Sending + +
+ sending +
+ +Now there is very little code that needs to go into the +sender and receiver classes. The sender leverages the Steeltoe`RabbitTemplate` that the `RabbitMQHost` adds to the service container for you which you can use to send messages. We will inject it into the sender by adding it to the constructor of `Tut1Sender`. + +Here is the code for the sender: + + +```csharp +using Steeltoe.Messaging.RabbitMQ.Core; + +namespace Sender +{ + public class Tut1Sender : BackgroundService + { + private readonly ILogger _logger; + private readonly RabbitTemplate _rabbitTemplate; + + public Tut1Sender(ILogger logger, RabbitTemplate rabbitTemplate) + { + _logger = logger; + _rabbitTemplate = rabbitTemplate; + } + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + while (!stoppingToken.IsCancellationRequested) + { + await _rabbitTemplate.ConvertAndSendAsync(Program.QueueName, "Hello World!"); + _logger.LogInformation("Worker running at: {time}, sent message!", DateTimeOffset.Now); + await Task.Delay(1000, stoppingToken); + } + } + } +} +``` + +You'll notice that Steeltoe removes the typical boilerplate .NET code needed to send and receive messages +leaving you with only the logic of the messaging to be concerned +about. Steeltoe wraps the boilerplate RabbitMQ client classes with +a `RabbitTemplate` that can be easily injected into the sender. The template has been +pre-configured with a connection to the broker using the `Caching Connection Factory` mentioned earlier. + +All that is left is to create a message and invoke the template's +`ConvertAndSend***()` method passing in the queue name that +we defined and the message we wish to send. + +> #### Sending doesn't work! +> +> If this is your first time using RabbitMQ and you don't see the "Sent" +> message then you may be left scratching your head wondering what could +> be wrong. Maybe the broker was started without enough free disk space +> (by default it needs at least 200 MB free) and is therefore refusing to +> accept messages. Check the broker log file to confirm and reduce the +> limit if necessary. The href="https://www.rabbitmq.com/configure.html#config-items">configuration +> file documentation will show you how to set disk_free_limit. + +## Receiving + +The receiver is equally simple. We annotate our receiver +class with `RabbitListener` attribute and pass in the name of the queue to the attribute. This ties the method to the queue such that all messages that arrive on the queue will be delivered to the method. + +In this case we will annotate a `void Receive(string input)` method which has a parameter (i.e. `input`) indicates the type of object from the message payload we expect to receive from the queue. In our tutorial we will be sending and receiving strings via the queue. Behind the scenes, Steeltoe will use the `Rabbit Message converter` mentioned earlier to convert the incoming message payload to the type you defined in the `Receive()` method. + +Here is the code for the receiver: + + +```csharp +using Microsoft.Extensions.Logging; +using Steeltoe.Messaging.RabbitMQ.Attributes; + +namespace Receiver +{ + public class Tut1Receiver + { + private readonly ILogger _logger; + + public Tut1Receiver(ILogger logger) + { + _logger = logger; + } + + [RabbitListener(Queue = Program.QueueName)] + public void Receive(string input) + { + _logger.LogInformation($"Received: {input}"); + } + } +} +``` + +## Putting it all together + +We must now build the solution. + +```bash +cd tutorials\tutorial1 +dotnet build +``` + +To run the receiver, execute the following commands: + +```bash +# receiver + +cd receiver +dotnet run +``` + +Open another shell to run the sender: + +```bash +# sender + +cd sender +dotnet run +``` + +> #### Listing queues +> +> You may wish to see what queues RabbitMQ has and how many +> messages are in them. You can do it (as a privileged user) using the `rabbitmqctl` CLI tool: +> +>
+> sudo rabbitmqctl list_queues
+> 
+> +> On Windows, omit the sudo: +>
+> rabbitmqctl.bat list_queues
+> 
+ +Time to move on to [tutorial 2](tutorial-two-steeltoe.html) and build a simple **work queue**. diff --git a/Messaging/src/Tutorials/Tutorial1/Receiver/Program.cs b/Messaging/src/Tutorials/Tutorial1/Receiver/Program.cs new file mode 100644 index 00000000..edc84afd --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial1/Receiver/Program.cs @@ -0,0 +1,29 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Steeltoe.Messaging.RabbitMQ.Config; +using Steeltoe.Messaging.RabbitMQ.Extensions; +using Steeltoe.Messaging.RabbitMQ.Host; + +namespace Receiver +{ + internal class Program + { + internal const string QueueName = "hello"; + + static void Main(string[] args) + { + RabbitMQHost.CreateDefaultBuilder(args) + .ConfigureServices((hostContext, services) => + { + // Add queue to service container to be declared + services.AddRabbitQueue(new Queue(QueueName)); + + // Add the rabbit listener + services.AddSingleton(); + services.AddRabbitListeners(); + }) + .Build() + .Run(); + } + } +} \ No newline at end of file diff --git a/Messaging/src/Tutorials/Tutorial1/Receiver/Receiver.csproj b/Messaging/src/Tutorials/Tutorial1/Receiver/Receiver.csproj new file mode 100644 index 00000000..c4a1e184 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial1/Receiver/Receiver.csproj @@ -0,0 +1,15 @@ + + + + Exe + net6.0 + enable + enable + + + + + + + + diff --git a/Messaging/src/Tutorials/Tutorial1/Receiver/Tut1Receiver.cs b/Messaging/src/Tutorials/Tutorial1/Receiver/Tut1Receiver.cs new file mode 100644 index 00000000..a0395d68 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial1/Receiver/Tut1Receiver.cs @@ -0,0 +1,21 @@ +using Microsoft.Extensions.Logging; +using Steeltoe.Messaging.RabbitMQ.Attributes; + +namespace Receiver +{ + public class Tut1Receiver + { + private readonly ILogger _logger; + + public Tut1Receiver(ILogger logger) + { + _logger = logger; + } + + [RabbitListener(Queue = Program.QueueName)] + public void Receive(string input) + { + _logger.LogInformation($"Received: {input}"); + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial1/Sender/Program.cs b/Messaging/src/Tutorials/Tutorial1/Sender/Program.cs new file mode 100644 index 00000000..538ae65a --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial1/Sender/Program.cs @@ -0,0 +1,25 @@ +using Steeltoe.Messaging.RabbitMQ.Config; +using Steeltoe.Messaging.RabbitMQ.Extensions; +using Steeltoe.Messaging.RabbitMQ.Host; + +namespace Sender +{ + public class Program + { + // The name of the queue that will be created + internal const string QueueName = "hello"; + public static void Main(string[] args) + { + RabbitMQHost.CreateDefaultBuilder(args) + .ConfigureServices(services => + { + // Add queue to service container to be declared + services.AddRabbitQueue(new Queue(QueueName)); + + services.AddHostedService(); + }) + .Build() + .Run(); + } + } +} \ No newline at end of file diff --git a/Messaging/src/Tutorials/Tutorial1/Sender/Properties/launchSettings.json b/Messaging/src/Tutorials/Tutorial1/Sender/Properties/launchSettings.json new file mode 100644 index 00000000..8ceaf50a --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial1/Sender/Properties/launchSettings.json @@ -0,0 +1,11 @@ +{ + "profiles": { + "Sender": { + "commandName": "Project", + "dotnetRunMessages": true, + "environmentVariables": { + "DOTNET_ENVIRONMENT": "Development" + } + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial1/Sender/Sender.csproj b/Messaging/src/Tutorials/Tutorial1/Sender/Sender.csproj new file mode 100644 index 00000000..dd68f4a3 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial1/Sender/Sender.csproj @@ -0,0 +1,14 @@ + + + + net6.0 + enable + enable + dotnet-Sender-2F9F8745-3AD7-41AD-AF06-AAB67AD8DD50 + + + + + + + diff --git a/Messaging/src/Tutorials/Tutorial1/Sender/Tut1Sender.cs b/Messaging/src/Tutorials/Tutorial1/Sender/Tut1Sender.cs new file mode 100644 index 00000000..da53364d --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial1/Sender/Tut1Sender.cs @@ -0,0 +1,26 @@ +using Steeltoe.Messaging.RabbitMQ.Core; + +namespace Sender +{ + public class Tut1Sender : BackgroundService + { + private readonly ILogger _logger; + private readonly RabbitTemplate _rabbitTemplate; + + public Tut1Sender(ILogger logger, RabbitTemplate rabbitTemplate) + { + _logger = logger; + _rabbitTemplate = rabbitTemplate; + } + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + while (!stoppingToken.IsCancellationRequested) + { + await _rabbitTemplate.ConvertAndSendAsync(Program.QueueName, "Hello World!"); + _logger.LogInformation("Worker running at: {time}, sent message!", DateTimeOffset.Now); + await Task.Delay(1000, stoppingToken); + } + } + } +} \ No newline at end of file diff --git a/Messaging/src/Tutorials/Tutorial1/Sender/appsettings.Development.json b/Messaging/src/Tutorials/Tutorial1/Sender/appsettings.Development.json new file mode 100644 index 00000000..b2dcdb67 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial1/Sender/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.Hosting.Lifetime": "Information" + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial1/Sender/appsettings.json b/Messaging/src/Tutorials/Tutorial1/Sender/appsettings.json new file mode 100644 index 00000000..b2dcdb67 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial1/Sender/appsettings.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.Hosting.Lifetime": "Information" + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial1/Tutorial1.sln b/Messaging/src/Tutorials/Tutorial1/Tutorial1.sln new file mode 100644 index 00000000..13a31df4 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial1/Tutorial1.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.2.32901.213 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Receiver", "Receiver\Receiver.csproj", "{5D219E95-D1D5-445D-AA7A-5EE12D2FC648}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sender", "Sender\Sender.csproj", "{749C54CB-C3AC-445A-8F64-61A4F7934AB3}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {5D219E95-D1D5-445D-AA7A-5EE12D2FC648}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5D219E95-D1D5-445D-AA7A-5EE12D2FC648}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5D219E95-D1D5-445D-AA7A-5EE12D2FC648}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5D219E95-D1D5-445D-AA7A-5EE12D2FC648}.Release|Any CPU.Build.0 = Release|Any CPU + {749C54CB-C3AC-445A-8F64-61A4F7934AB3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {749C54CB-C3AC-445A-8F64-61A4F7934AB3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {749C54CB-C3AC-445A-8F64-61A4F7934AB3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {749C54CB-C3AC-445A-8F64-61A4F7934AB3}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {D89895A3-07E9-47A2-987A-96A1B609D0D0} + EndGlobalSection +EndGlobal diff --git a/Messaging/src/Tutorials/Tutorial2/Readme.md b/Messaging/src/Tutorials/Tutorial2/Readme.md new file mode 100644 index 00000000..8c653cb8 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial2/Readme.md @@ -0,0 +1,389 @@ +# RabbitMQ Tutorial - Work Queues + +## Work Queues (using Steeltoe) + +> #### Prerequisites +> This tutorial assumes RabbitMQ is [downloaded](https://www.rabbitmq.com/download.html) and installed and running +> on `localhost` on the [standard port](https://www.rabbitmq.com/networking.html#ports) (`5672`). +> +> In case you use a different host, port or credentials, connections settings would require adjusting. +> +> #### Where to get help +> If you're having trouble going through this tutorial you can contact us through Github issues on our +> [Steeltoe Samples Repository](https://github.com/SteeltoeOSS/Samples). + + +In the [first tutorial](../Tutorial1/Readme.md) we +wrote programs to send and receive messages from a named queue. In this +tutorial we'll create a _Work Queue_ that will be used to distribute +time-consuming tasks among multiple workers. + +The main idea behind Work Queues (aka: _Task Queues_) is to avoid +doing a resource-intensive task immediately and having to wait for +it to complete. Instead we schedule the task to be done later. We encapsulate a +_task_ as a message and send it to a queue. A worker process running +in the background will pop the tasks and eventually execute the +job. When you run many workers the tasks will be shared between them. + +This concept is especially useful in web applications where it's +impossible to handle a complex task during a short HTTP request +window. + +## Preparation + +In the first tutorial we sent a message containing +"Hello World!" as a String. Now we'll be sending strings that stand for complex +tasks. We don't have a real-world task, like images to be resized or +PDF files to be rendered, so let's fake it by just pretending we're +busy - by using the `Thread.Sleep()` function. We'll take the number of dots +in the string as its complexity; every dot will account for one second +of "work". For example, a fake task described by `Hello...` +will take three seconds. + +Please see the setup used in [first tutorial](../Tutorial1/Readme.md) +if you have not setup the project. We will follow the same pattern for +all of the rest of the tutorials in this series. As a reminder you should: + + - Create a VS2022 solution with an initial `Console` application project which will become the `Receiver`. Add a `Tut2Receiver` class to the project. + - Add a `Worker Service` project to the solution. Name the project `Sender` and rename the `Worker.cs` file to `Tut2Sender.cs`. + - Update the `.csproj` files with the Steeltoe RabbitMQ messaging package reference. + - Update both `Program.cs` files to use the `RabbitMQHost` like we did in the first tutorial. + +Here is what the `Program.cs` file for the receiver should look like when you're done: + +```csharp +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Steeltoe.Messaging.RabbitMQ.Extensions; +using Steeltoe.Messaging.RabbitMQ.Host; + +namespace Receiver +{ + internal class Program + { + static void Main(string[] args) + { + RabbitMQHost.CreateDefaultBuilder(args) + .ConfigureServices((hostContext, services) => + { + // Add the rabbit listener + services.AddSingleton(); + services.AddRabbitListeners(); + }) + .Build() + .Run(); + } + } +} +``` + +And here is what the sender `Program.cs` file should look like: + +```csharp +using Steeltoe.Messaging.RabbitMQ.Host; + +namespace Sender +{ + public class Program + { + public static void Main(string[] args) + { + RabbitMQHost.CreateDefaultBuilder(args) + .ConfigureServices(services => + { + services.AddHostedService(); + }) + .Build() + .Run(); + } + } +} +``` + +Notice above we did not add the `Queue` to the service container like we did in the first tutorial. Instead we are going to leverage another feature of Steeltoe that enables us to declare `RabbitMQ` entities (i.e. Queues, Exchanges, Bindings, etc) using a declarative approach leveraging .NET attributes. We will see this when we update `Tut2Receiver` below. + +## Sender + +We will modify the sender to provide a means for identifying +whether it's a longer running task by appending dots to the +message in a very contrived fashion. We will be using the same method +on the `RabbitTemplate` to publish the message `ConvertAndSendAsync()`. + +The Steeltoe documentation defines this as, "Convert an object to +a message and send it to a default exchange with a +default routing key." + +Here is what the `Tut2Sender` looks like: + +```csharp +using Steeltoe.Messaging.RabbitMQ.Core; +using System.Text; + +namespace Sender +{ + public class Tut2Sender : BackgroundService + { + private const string QueueName = "hello"; + + private readonly ILogger _logger; + private readonly RabbitTemplate _rabbitTemplate; + private int dots = 0; + private int count = 0; + + + public Tut2Sender(ILogger logger, RabbitTemplate rabbitTemplate) + { + _logger = logger; + _rabbitTemplate = rabbitTemplate; + } + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + while (!stoppingToken.IsCancellationRequested) + { + _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); + var message = CreateMessage(); + await _rabbitTemplate.ConvertAndSendAsync(QueueName, message); + _logger.LogInformation($"Sent '" + message + "'"); + await Task.Delay(1000, stoppingToken); + } + } + + private string CreateMessage() + { + StringBuilder builder = new StringBuilder("Hello"); + if (++dots == 4) + { + dots = 1; + } + for (int i = 0; i < dots; i++) + { + builder.Append('.'); + } + builder.Append(++count); + return builder.ToString(); + } + } +} +``` + + +## Receiver + +Our receiver, `Tut2Receiver`, simulates an arbitrary length for +a fake task in the `DoWork()` method where the number of dots +translates into the number of seconds the work will take. + +Again, we leverage a `RabbitListener` on a queue named `hello` just like in the first tutorial. + +Here is what the code for the `Tut2Receiver` looks like: + + +```csharp +using Microsoft.Extensions.Logging; +using Steeltoe.Messaging.RabbitMQ.Attributes; +using System.Diagnostics; + +namespace Receiver +{ + [DeclareQueue(Name = "hello")] + internal class Tut2Receiver + { + private readonly ILogger _logger; + + public Tut2Receiver(ILogger logger) + { + _logger = logger; + } + + [RabbitListener(Queue = "#{@hello}")] + public void Receive(string input) + { + var watch = new Stopwatch(); + watch.Start(); + + DoWork(input); + + watch.Stop(); + + var time = watch.Elapsed; + _logger.LogInformation($"Received: {input} took: {time}"); + } + + private void DoWork(string input) + { + foreach(var ch in input) + { + if (ch == '.') + Thread.Sleep(1000); + } + } + } +} +``` + +You should notice a couple new changes in the receiver that you did not see in the first tutorial. First notice the attribute on the `Tut2Receiver` class: + +```csharp +[DeclareQueue(Name = "hello")] +``` + +The above is the declarative way in Steeltoe to add a queue to the service container. In the first tutorial we used the `AddQueue()` method in `Program.cs`; in this tutorial we have switched to using the attribute mechanism instead. + + +The second change you should see is in how we reference the queue in the `RabbitListener` attribute: + +```csharp +[RabbitListener(Queue = "#{@hello}")] +``` + +This syntax uses a powerful Steeltoe feature that leverages a built in `expression language` that is executed when the listener is created. To use the language, you enclose the `expression` inside a `#{...}` as shown above. In this case the expression is `@hello`. The `@` symbol is part of the language,; it is used to specify a reference to service from the service container is desired and the name of the service in the container follows that `@` symbol. In this case, the service name `hello` is used to reference the `Queue` that was added to the service container using the `DeclareQueue` attribute we mentioned above. This is how the `RabbitListener` ties the `Receive()` method to the `hello` queue. + + +## Putting it all together + +Compile both projects using `dotnet build`. + +```bash +cd tutorials\tutorial2 +dotnet build +``` + +Run multiple `Receivers` in different command windows and then start up the sender: + +```bash +# receiver1 + +cd receiver +dotnet run + +# receiver2 + +cd receiver +dotnet run + +# sender + +cd sender +dotnet run + +``` + +Notice how the work that is produced by the sender is distributed across both receivers. + + +## Message acknowledgment + +Doing a task can take a few seconds, you may wonder what happens if a consumer starts a long task and it terminates before it completes. By default once RabbitMQ delivers a message to the consumer, it immediately marks it for deletion. In this case, if you terminate a worker, the message it was just processing is lost. The messages that were dispatched to this particular worker but were not yet handled are also lost. + +But we don't want to lose any tasks. If a worker dies, we'd like the task to be delivered to another worker. + +In order to make sure a message is never lost, RabbitMQ supports [message _acknowledgments_](https://www.rabbitmq.com/confirms.html). An acknowledgement is sent back by the consumer to tell RabbitMQ that a particular message has been received, processed and that RabbitMQ is free to delete it. + +If a consumer dies (its channel is closed, connection is closed, or TCP connection is lost) without sending an ack, RabbitMQ will understand that a message wasn't processed fully and will re-queue it. If there are other consumers online at the same time, it will then quickly redeliver it to another consumer. That way you can be sure that no message is lost, even if the workers occasionally die. + +By default Steeltoe takes a conservative approach to [message acknowledgement](https://www.rabbitmq.com/confirms.html). If the listener throws an exception the underlying `Rabbit Container` created by Steeltoe (note: we talked about it the first tutorial) calls: + +```csharp +channel.BasicReject(deliveryTag, requeue) +``` + +Requeue is true by default. This is the typical behavior you want as you don't want to lose any tasks. + +But, there are sometimes you want the message to be dropped (i.e. not requeued). You have two ways to control this in Steeltoe. You can explicitly configure the `Container Factory` we mentioned in the first tutorial to default to false for `requeue` when it creates `Rabbit Containers`. Or, the other option is in the `RabbitListener` code you write, you throw a `RabbitRejectAndDoNotRequeueException` instead of some other exception. In this case Steeltoe will not requeue the message and instead just acknowledge it. + +Acknowledgements must be sent on the same channel the delivery +was received on. Attempts to acknowledge using a different channel +will result in a channel-level protocol exception. See the [doc guide on confirmations](https://www.rabbitmq.com/confirms.html) to learn more. +Steeltoe generally takes care of this for you, but when used in combination with code +that uses RabbitMQ .NET client directly, this is something to keep in mind. + +> #### Forgotten acknowledgments +> +> It's a common programming mistake to miss the `BasicAck` when using the .NET client directly. +> Its an easy error, and the consequences can be serious. Messages will be redelivered +> when your client quits (which may look like random redelivery), but +> RabbitMQ will eat more and more memory as it won't be able to release +> any un-acked messages. +> +> Steeltoe helps to avoid this mistake through its default configuration and managing the acknowledgement for the developer in the `Rabbit Container`. +> + +## Message durability + +In the previous section we discussed how to make sure that even if the consumer dies, the +task isn't lost. We learned that by default, Steeltoe enables and manages message acknowledgments for the developer. +But our tasks will still be lost if RabbitMQ server stops. + +When RabbitMQ quits or crashes it will forget the queues and messages +unless you tell it not to. Two things are required to make sure that +messages aren't lost: we need to mark both the queue and messages as +durable. + +Messages are persistent by default with Steeltoe. Note the queue +the message will end up in needs to be durable as well, otherwise +the message will not survive a broker restart as a non-durable queue does not +itself survive a restart. With Steeltoe you can specify the durability of queues using the `Durable` property +on the `DeclareQueue` attribute. + +If you want to have more control over the message persistence or over any other aspects of outbound +messages in Steeltoe, you can use `RabbitTemplate#ConvertAndSend(...)` methods +that accept a `IMessagePostProcessor` parameter. `IMessagePostProcessor` +provides a callback before the message is actually sent, so this +is a good place to modify the message payload or any headers that will be sent. + +> #### Note on message persistence +> +> Marking messages as persistent doesn't fully guarantee that a message +> won't be lost. Although it tells RabbitMQ to save the message to disk, +> there is still a short time window when RabbitMQ has accepted a message and +> hasn't saved it yet. Also, RabbitMQ doesn't do `fsync(2)` for every +> message -- it may be just saved to cache and not really written to the +> disk. The persistence guarantees aren't strong, but it's more than enough +> for our simple task queue. If you need a stronger guarantee then you can use +> [publisher confirms](https://www.rabbitmq.com/confirms.html). + +### Fair dispatch vs Round-robin dispatching + +By default, RabbitMQ will send each message to the next consumer, +in sequence. On average every consumer will get the same number of +messages. This way of distributing messages is called round-robin. + +With this default RabbitMQ mode, dispatching doesn't necessarily work exactly as we want. +For example in a situation with two workers, when all +odd messages are heavy and even messages are light, one worker will be +constantly busy and the other one will do hardly any work. Well, +RabbitMQ doesn't know anything about that and will still dispatch +messages evenly. + +This happens because RabbitMQ just dispatches a message when the message +enters the queue. It doesn't look at the number of unacknowledged +messages for a consumer. It just blindly dispatches every n-th message +to the n-th consumer. + +One solution that is commonly recommended is to use a RabbitMQ feature called `prefetchCount` and to set the count to 1. +This tells RabbitMQ not to give more than one message to a worker at a time. +Or, in other words, don't dispatch a new message to a worker until it has processed and acknowledged the previous one. +Instead, it will dispatch any new message to the next worker that is not still busy. + +
+ Producer -> Queue -> Consuming: RabbitMQ dispatching messages. +
+ +However in most of the cases using a `prefetchCount` equal to 1 would be too conservative and severely +limit consumer throughput. + +Instead Steeltoe defaults the `prefetchCount` to 250. This tells RabbitMQ not to give more than 250 messages to a worker +at a time. Or, in other words, don't dispatch a new message to a worker while the number of un-acked messages is 250. This setting improves throughput while also enabling a `Fair Dispatching` of messages. + +> #### Note about queue size +> +> If all the workers are busy, your queue can fill up. You will want to keep an +> eye on that, and maybe add more workers, or have some other strategy. + +By using Steeltoe Messaging you get reasonable values configured for +message acknowledgments and fair dispatching. The default durability +for queues and persistence for messages provided by Steeltoe +allow the messages to survive even if RabbitMQ is restarted. + +Now we can move on to [tutorial 3](tutorial-three-steeltoe.html) and learn how to deliver the same message to many consumers. diff --git a/Messaging/src/Tutorials/Tutorial2/Receiver/Program.cs b/Messaging/src/Tutorials/Tutorial2/Receiver/Program.cs new file mode 100644 index 00000000..2a3649cc --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial2/Receiver/Program.cs @@ -0,0 +1,23 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Steeltoe.Messaging.RabbitMQ.Extensions; +using Steeltoe.Messaging.RabbitMQ.Host; + +namespace Receiver +{ + internal class Program + { + static void Main(string[] args) + { + RabbitMQHost.CreateDefaultBuilder(args) + .ConfigureServices((hostContext, services) => + { + // Add the rabbit listener + services.AddSingleton(); + services.AddRabbitListeners(); + }) + .Build() + .Run(); + } + } +} \ No newline at end of file diff --git a/Messaging/src/Tutorials/Tutorial2/Receiver/Receiver.csproj b/Messaging/src/Tutorials/Tutorial2/Receiver/Receiver.csproj new file mode 100644 index 00000000..8d8ea711 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial2/Receiver/Receiver.csproj @@ -0,0 +1,15 @@ + + + + Exe + net6.0 + enable + enable + + + + + + + + diff --git a/Messaging/src/Tutorials/Tutorial2/Receiver/Tut2Receiver.cs b/Messaging/src/Tutorials/Tutorial2/Receiver/Tut2Receiver.cs new file mode 100644 index 00000000..022611fc --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial2/Receiver/Tut2Receiver.cs @@ -0,0 +1,40 @@ +using Microsoft.Extensions.Logging; +using Steeltoe.Messaging.RabbitMQ.Attributes; +using System.Diagnostics; + +namespace Receiver +{ + [DeclareQueue(Name = "hello")] + internal class Tut2Receiver + { + private readonly ILogger _logger; + + public Tut2Receiver(ILogger logger) + { + _logger = logger; + } + + [RabbitListener(Queue = "#{@hello}")] + public void Receive(string input) + { + var watch = new Stopwatch(); + watch.Start(); + + DoWork(input); + + watch.Stop(); + + var time = watch.Elapsed; + _logger.LogInformation($"Received: {input} took: {time}"); + } + + private void DoWork(string input) + { + foreach(var ch in input) + { + if (ch == '.') + Thread.Sleep(1000); + } + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial2/Sender/Program.cs b/Messaging/src/Tutorials/Tutorial2/Sender/Program.cs new file mode 100644 index 00000000..66a49aa3 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial2/Sender/Program.cs @@ -0,0 +1,18 @@ +using Steeltoe.Messaging.RabbitMQ.Host; + +namespace Sender +{ + public class Program + { + public static void Main(string[] args) + { + RabbitMQHost.CreateDefaultBuilder(args) + .ConfigureServices(services => + { + services.AddHostedService(); + }) + .Build() + .Run(); + } + } +} \ No newline at end of file diff --git a/Messaging/src/Tutorials/Tutorial2/Sender/Properties/launchSettings.json b/Messaging/src/Tutorials/Tutorial2/Sender/Properties/launchSettings.json new file mode 100644 index 00000000..8ceaf50a --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial2/Sender/Properties/launchSettings.json @@ -0,0 +1,11 @@ +{ + "profiles": { + "Sender": { + "commandName": "Project", + "dotnetRunMessages": true, + "environmentVariables": { + "DOTNET_ENVIRONMENT": "Development" + } + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial2/Sender/Sender.csproj b/Messaging/src/Tutorials/Tutorial2/Sender/Sender.csproj new file mode 100644 index 00000000..5486dd48 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial2/Sender/Sender.csproj @@ -0,0 +1,14 @@ + + + + net6.0 + enable + enable + dotnet-Sender-29CDA118-FCEF-4E21-876D-33FB66A1B06E + + + + + + + diff --git a/Messaging/src/Tutorials/Tutorial2/Sender/Tut2Sender.cs b/Messaging/src/Tutorials/Tutorial2/Sender/Tut2Sender.cs new file mode 100644 index 00000000..757ac478 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial2/Sender/Tut2Sender.cs @@ -0,0 +1,49 @@ +using Steeltoe.Messaging.RabbitMQ.Core; +using System.Text; + +namespace Sender +{ + public class Tut2Sender : BackgroundService + { + private const string QueueName = "hello"; + + private readonly ILogger _logger; + private readonly RabbitTemplate _rabbitTemplate; + private int dots = 0; + private int count = 0; + + + public Tut2Sender(ILogger logger, RabbitTemplate rabbitTemplate) + { + _logger = logger; + _rabbitTemplate = rabbitTemplate; + } + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + while (!stoppingToken.IsCancellationRequested) + { + _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); + var message = CreateMessage(); + await _rabbitTemplate.ConvertAndSendAsync(QueueName, message); + _logger.LogInformation($"Sent '" + message + "'"); + await Task.Delay(1000, stoppingToken); + } + } + + private string CreateMessage() + { + StringBuilder builder = new StringBuilder("Hello"); + if (++dots == 4) + { + dots = 1; + } + for (int i = 0; i < dots; i++) + { + builder.Append('.'); + } + builder.Append(++count); + return builder.ToString(); + } + } +} \ No newline at end of file diff --git a/Messaging/src/Tutorials/Tutorial2/Sender/appsettings.Development.json b/Messaging/src/Tutorials/Tutorial2/Sender/appsettings.Development.json new file mode 100644 index 00000000..b2dcdb67 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial2/Sender/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.Hosting.Lifetime": "Information" + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial2/Sender/appsettings.json b/Messaging/src/Tutorials/Tutorial2/Sender/appsettings.json new file mode 100644 index 00000000..b2dcdb67 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial2/Sender/appsettings.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.Hosting.Lifetime": "Information" + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial2/Tutorial2.sln b/Messaging/src/Tutorials/Tutorial2/Tutorial2.sln new file mode 100644 index 00000000..a652bda4 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial2/Tutorial2.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.2.32901.213 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Receiver", "Receiver\Receiver.csproj", "{9B6765B9-3B76-4271-ABD1-6D3A56351374}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sender", "Sender\Sender.csproj", "{EA4AA576-CF3E-4F2B-8BE1-22972156FBA5}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9B6765B9-3B76-4271-ABD1-6D3A56351374}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9B6765B9-3B76-4271-ABD1-6D3A56351374}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9B6765B9-3B76-4271-ABD1-6D3A56351374}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9B6765B9-3B76-4271-ABD1-6D3A56351374}.Release|Any CPU.Build.0 = Release|Any CPU + {EA4AA576-CF3E-4F2B-8BE1-22972156FBA5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EA4AA576-CF3E-4F2B-8BE1-22972156FBA5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EA4AA576-CF3E-4F2B-8BE1-22972156FBA5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EA4AA576-CF3E-4F2B-8BE1-22972156FBA5}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {4A7D7FF9-4990-467F-A48A-6E9CB73FA805} + EndGlobalSection +EndGlobal diff --git a/Messaging/src/Tutorials/Tutorial3/Readme.md b/Messaging/src/Tutorials/Tutorial3/Readme.md new file mode 100644 index 00000000..ea3c3ef6 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial3/Readme.md @@ -0,0 +1,433 @@ + +# RabbitMQ tutorial - Publish/Subscribe + +## Publish/Subscribe (using Steeltoe) + +> #### Prerequisites +> This tutorial assumes RabbitMQ is [downloaded](https://www.rabbitmq.com/download.html) and installed and running +> on `localhost` on the [standard port](https://www.rabbitmq.com/networking.html#ports) (`5672`). +> +> In case you use a different host, port or credentials, connections settings would require adjusting. +> +> #### Where to get help +> If you're having trouble going through this tutorial you can contact us through Github issues on our +> [Steeltoe Samples Repository](https://github.com/SteeltoeOSS/Samples). + +In the [first tutorial](../Tutorial1/Readme.md) we showed how +to use Visual Studio to create a solution with two projects +with the Steeltoe RabbitMQ Messaging dependency and to create simple +applications that send and receive string hello messages. + +In the [previous tutorial](../Tutorial2/Readme.md) we created +a sender and receiver and a work queue with two consumers. +We also used Steeltoe attributes to declare the queue. +The assumption behind a work queue is that each task is delivered to exactly one worker. + +In this part we'll implement a fanout pattern to deliver +a message to multiple consumers. This pattern is also known as "publish/subscribe" +and is implemented by configuring a number of RabbitMQ entities using Steeltoe attributes. + +Essentially, published messages are going to be broadcast to all the receivers. + +Exchanges +--------- + +In previous parts of the tutorial we sent and received messages to and +from a queue. Now it's time to introduce the full messaging model in +RabbitMQ. + +Let's quickly go over what we covered in the previous tutorials: + + * A _producer_ is a user application that sends messages. + * A _queue_ is a buffer that stores messages. + * A _consumer_ is a user application that receives messages. + +The core idea in the messaging model in RabbitMQ is that the producer +never sends any messages directly to a queue. Actually, quite often +the producer doesn't even know if a message will be delivered to any +queue at all. + +Instead, the producer can only send messages to an _exchange_. An +exchange is a very simple thing. On one side it receives messages from +producers and the other side it pushes them to queues. The exchange +must know exactly what to do with a message it receives. Should it be +appended to a particular queue? Should it be appended to many queues? +Or should it get discarded. The rules for that are defined by the +_exchange type_. + +
+ An exchange: The producer can only send messages to an exchange. One side of the exchange receives messages from producers and the other side pushes them to queues. +
+ +There are a few exchange types available: `direct`, `topic`, `headers` +and `fanout`. We'll focus on the last one -- the fanout. Let's setup +our Receiver with an exchange of this type, and call it `tut.fanout`: + +```csharp +using Microsoft.Extensions.Logging; +using Steeltoe.Messaging.RabbitMQ.Attributes; +using Steeltoe.Messaging.RabbitMQ.Config; +using System.Diagnostics; + +namespace Receiver +{ + [DeclareExchange(Name = "tut.fanout", Type = ExchangeType.FANOUT)] + [DeclareAnonymousQueue("queue1")] + [DeclareAnonymousQueue("queue2")] + [DeclareQueueBinding(Name = "tut.fanout.binding.queue1", ExchangeName = "tut.fanout", QueueName = "#{@queue1}")] + [DeclareQueueBinding(Name = "tut.fanout.binding.queue2", ExchangeName = "tut.fanout", QueueName = "#{@queue2}")] + internal class Tut3Receiver + { + private readonly ILogger _logger; + + public Tut3Receiver(ILogger logger) + { + _logger = logger; + } + .... + } +} +``` + +We follow the same approach as in the previous tutorial and use attributes to declare our RabbitMQ entities. +We declare the `FanoutExchange` using the `DeclareExchange` attribute. We also +define four additional RabbitMQ entities, two `AnonymousQueue`s (non-durable, exclusive, auto-delete queues +in AMQP terms) using the `DeclareAnonymousQueue`and two bindings (`DeclareQueueBinding`) to bind those queues to the exchange. + +Notice how we tie together these entities. First, the name of the exchange is `tut.fanout` and the two anonymous queues are named `queue1` and `queue2`. +Next, the bindings reference both the exchange name (e.g. `ExchangeName = "tut.fanout"`) and the queue name (e.g. `QueueName = "#{@queue2}"`). Notice we use +the `expression language` we mentioned in the previous tutorial to in the queue name reference. + +The fanout exchange is very simple. As you can probably guess from the +name, it just broadcasts all the messages it receives to all the +queues it knows. And that's exactly what we need for fanning out our +messages. + +> #### Listing exchanges +> +> To list the exchanges on the server you can run the ever useful `rabbitmqctl`: +> +> ```bash +> sudo rabbitmqctl list_exchanges +> ``` +> +> In this list there will be some `amq.*` exchanges and the default (unnamed) +> exchange. These are created by default, but it is unlikely you'll need to +> use them at the moment. + +> #### Nameless exchange +> +> In previous parts of the tutorial we knew nothing about exchanges, +> but still were able to send messages to queues. That was possible +> because we were using a default exchange, which we identify by the empty string (`""`). +> +> Recall how we published a message before: +> +> ```csharp +> template.ConvertAndSend(QueueName, message) +>``` +> +> The first parameter is the routing key and the `RabbitTemplate` +> sends messages by default to the default exchange. Each queue is automatically +> bound to the default exchange with the name of queue as the binding key. +> This is why we can use the name of the queue as the routing key to make +> sure the message ends up in the queue. + +Now, we can publish to our named exchange instead: + +```csharp +namespace Sender +{ + public class Tut3Sender : BackgroundService + { + internal const string FanoutExchangeName = "tut.fanout"; + private readonly RabbitTemplate _rabbitTemplate; + + public Tut3Sender(ILogger logger, RabbitTemplate rabbitTemplate) + { + _logger = logger; + _rabbitTemplate = rabbitTemplate; + } + + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + while (!stoppingToken.IsCancellationRequested) + { + // .... + await _rabbitTemplate.ConvertAndSendAsync(FanoutExchangeName, string.Empty, message); + } + } + } +} + +``` + +From now on the `fanout` exchange will append messages to our queues. + +Temporary queues +---------------- + +As you may remember previously we were using queues that had +specific names (remember `hello`). Being able to name +a queue was crucial for us -- we needed to point the workers to the +same queue. Giving a queue a name is important when you +want to share the queue between producers and consumers. + +But that's not the case for our fanout example. We want to hear about +all messages, not just a subset of them. We're +also interested only in currently flowing messages, not in the old +ones. To solve that we need two things. + +Firstly, whenever we connect to the broker, we need a fresh, empty queue. +To do this, we could create a queue with a random name, or -- +even better -- let the server choose a random queue name for us. + +Secondly, once we disconnect the consumer, the queue should be +automatically deleted. To do this with Steeltoe Messaging, +we defined an _AnonymousQueue_, using the `DeclareAnonymousQueue` attribute +which creates a non-durable, exclusive, auto-delete queue with a generated name: + + +```csharp +using Microsoft.Extensions.Logging; +using Steeltoe.Messaging.RabbitMQ.Attributes; +using Steeltoe.Messaging.RabbitMQ.Config; +using System.Diagnostics; + +namespace Receiver +{ + [DeclareExchange(Name = "tut.fanout", Type = ExchangeType.FANOUT)] + [DeclareAnonymousQueue("queue1")] + [DeclareAnonymousQueue("queue2")] + [DeclareQueueBinding(Name = "tut.fanout.binding.queue1", ExchangeName = "tut.fanout", QueueName = "#{@queue1}")] + [DeclareQueueBinding(Name = "tut.fanout.binding.queue2", ExchangeName = "tut.fanout", QueueName = "#{@queue2}")] + internal class Tut3Receiver + { + private readonly ILogger _logger; + + public Tut3Receiver(ILogger logger) + { + _logger = logger; + } + .... + } +} +``` + +At this point, our queues have random queue names. For example, +it may look something like `spring.gen-1Rx9HOqvTAaHeeZrQWu8Pg`. + +Bindings +-------- + +
+ The exchange sends messages to a queue. The relationship between the exchange and a queue is called a binding. +
+ + +We've already created a fanout exchange and a queue. Now we need to +tell the exchange to send messages to our queue. That relationship +between exchange and a queue is called a _binding_. Below you can see that we have two bindings declared using the `DeclareQueueBinding` attribute , one for each +`AnonymousQueue`. + +```csharp +using Microsoft.Extensions.Logging; +using Steeltoe.Messaging.RabbitMQ.Attributes; +using Steeltoe.Messaging.RabbitMQ.Config; +using System.Diagnostics; + +namespace Receiver +{ + [DeclareExchange(Name = "tut.fanout", Type = ExchangeType.FANOUT)] + [DeclareAnonymousQueue("queue1")] + [DeclareAnonymousQueue("queue2")] + [DeclareQueueBinding(Name = "tut.fanout.binding.queue1", ExchangeName = "tut.fanout", QueueName = "#{@queue1}")] + [DeclareQueueBinding(Name = "tut.fanout.binding.queue2", ExchangeName = "tut.fanout", QueueName = "#{@queue2}")] + internal class Tut3Receiver + { + private readonly ILogger _logger; + + public Tut3Receiver(ILogger logger) + { + _logger = logger; + } + .... + } +} +``` + +> #### Listing bindings +> +> You can list existing bindings using, you guessed it, +> ```bash +> rabbitmqctl list_bindings +> ``` + +Putting it all together +----------------------- + +
+ +
+ +The producer program, which emits messages, doesn't look much +different from the previous tutorial. The most important change is that +we now want to publish messages to our `fanout` exchange instead of the +nameless one. We need to supply a `routingKey` when sending, but its +value is ignored for `fanout` exchanges. + +Here goes the code for `Tut3Sender.cs` program: + +```csharp +using Steeltoe.Messaging.RabbitMQ.Core; +using System.Text; + +namespace Sender +{ + public class Tut3Sender : BackgroundService + { + private readonly ILogger _logger; + private int dots = 0; + private int count = 0; + + internal const string FanoutExchangeName = "tut.fanout"; + private readonly RabbitTemplate _rabbitTemplate; + + public Tut3Sender(ILogger logger, RabbitTemplate rabbitTemplate) + { + _logger = logger; + _rabbitTemplate = rabbitTemplate; + } + + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + while (!stoppingToken.IsCancellationRequested) + { + _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); + var message = CreateMessage(); + await _rabbitTemplate.ConvertAndSendAsync(FanoutExchangeName, string.Empty, message); + _logger.LogInformation($"Sent '" + message + "'"); + await Task.Delay(1000, stoppingToken); + } + } + + private string CreateMessage() + { + StringBuilder builder = new StringBuilder("Hello"); + if (++dots == 4) + { + dots = 1; + } + for (int i = 0; i < dots; i++) + { + builder.Append('.'); + } + builder.Append(++count); + return builder.ToString(); + } + } +} +``` + +As you see, we leverage dependency injection and add the `RabbitTemplate` to the constructors signature. +Note that messages will be lost if no queue is bound to the exchange yet, +but that's okay for us; if no consumer is listening yet we can safely discard the message. + +Next the code for `Tut3Receiver.cs`: + +```csharp +using Microsoft.Extensions.Logging; +using Steeltoe.Messaging.RabbitMQ.Attributes; +using Steeltoe.Messaging.RabbitMQ.Config; +using System.Diagnostics; + +namespace Receiver +{ + [DeclareExchange(Name = "tut.fanout", Type = ExchangeType.FANOUT)] + [DeclareAnonymousQueue("queue1")] + [DeclareAnonymousQueue("queue2")] + [DeclareQueueBinding(Name = "tut.fanout.binding.queue1", ExchangeName = "tut.fanout", QueueName = "#{@queue1}")] + [DeclareQueueBinding(Name = "tut.fanout.binding.queue2", ExchangeName = "tut.fanout", QueueName = "#{@queue2}")] + internal class Tut3Receiver + { + private readonly ILogger _logger; + + public Tut3Receiver(ILogger logger) + { + _logger = logger; + } + + + [RabbitListener(Queue = "#{@queue1}")] + public void Receive1(string input) + { + Receive(input, 1); + } + + [RabbitListener(Queue = "#{@queue2}")] + public void Receive2(string input) + { + Receive(input, 2); + } + + private void Receive(string input, int receiver) + { + var watch = new Stopwatch(); + watch.Start(); + + DoWork(input); + + watch.Stop(); + + var time = watch.Elapsed; + _logger.LogInformation($"Received: {input} from queue: {receiver}, took: {time}"); + } + + private void DoWork(string input) + { + foreach (var ch in input) + { + if (ch == '.') + Thread.Sleep(1000); + } + } + + } +} +``` + +Compile as before and we're ready to execute the fanout sender and receiver. + +```bash +cd tutorials\tutorial3 +dotnet build +``` + +And of course, to execute the tutorial do the following: + +To run the receiver, execute the following commands: + +```bash +# receiver + +cd receiver +dotnet run +``` + +Open another shell to run the sender: + +```bash +# sender + +cd sender +dotnet run +``` + +Using `rabbitmqctl list_bindings` you can verify that the code actually +creates bindings and queues as we want. With two `ReceiveLogs.java` +programs running you should see something like: + +To find out how to listen for a subset of messages, let's move on to +[tutorial 4](../Tutorial4/readme.md) diff --git a/Messaging/src/Tutorials/Tutorial3/Receiver/Program.cs b/Messaging/src/Tutorials/Tutorial3/Receiver/Program.cs new file mode 100644 index 00000000..a9f434a0 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial3/Receiver/Program.cs @@ -0,0 +1,24 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Steeltoe.Messaging.RabbitMQ.Config; +using Steeltoe.Messaging.RabbitMQ.Extensions; +using Steeltoe.Messaging.RabbitMQ.Host; + +namespace Receiver +{ + internal class Program + { + static void Main(string[] args) + { + RabbitMQHost.CreateDefaultBuilder(args) + .ConfigureServices((hostContext, services) => + { + // Add the rabbit listener + services.AddSingleton(); + services.AddRabbitListeners(); + }) + .Build() + .Run(); + } + } +} \ No newline at end of file diff --git a/Messaging/src/Tutorials/Tutorial3/Receiver/Receiver.csproj b/Messaging/src/Tutorials/Tutorial3/Receiver/Receiver.csproj new file mode 100644 index 00000000..f482b0d6 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial3/Receiver/Receiver.csproj @@ -0,0 +1,15 @@ + + + + Exe + net6.0 + enable + enable + + + + + + + + diff --git a/Messaging/src/Tutorials/Tutorial3/Receiver/Tut3Receiver.cs b/Messaging/src/Tutorials/Tutorial3/Receiver/Tut3Receiver.cs new file mode 100644 index 00000000..0e90daf3 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial3/Receiver/Tut3Receiver.cs @@ -0,0 +1,58 @@ +using Microsoft.Extensions.Logging; +using Steeltoe.Messaging.RabbitMQ.Attributes; +using Steeltoe.Messaging.RabbitMQ.Config; +using System.Diagnostics; + +namespace Receiver +{ + [DeclareExchange(Name = "tut.fanout", Type = ExchangeType.FANOUT)] + [DeclareAnonymousQueue("queue1")] + [DeclareAnonymousQueue("queue2")] + [DeclareQueueBinding(Name = "tut.fanout.binding.queue1", ExchangeName = "tut.fanout", QueueName = "#{@queue1}")] + [DeclareQueueBinding(Name = "tut.fanout.binding.queue2", ExchangeName = "tut.fanout", QueueName = "#{@queue2}")] + internal class Tut3Receiver + { + private readonly ILogger _logger; + + public Tut3Receiver(ILogger logger) + { + _logger = logger; + } + + + [RabbitListener(Queue = "#{@queue1}")] + public void Receive1(string input) + { + Receive(input, 1); + } + + [RabbitListener(Queue = "#{@queue2}")] + public void Receive2(string input) + { + Receive(input, 2); + } + + private void Receive(string input, int receiver) + { + var watch = new Stopwatch(); + watch.Start(); + + DoWork(input); + + watch.Stop(); + + var time = watch.Elapsed; + _logger.LogInformation($"Received: {input} from queue: {receiver}, took: {time}"); + } + + private void DoWork(string input) + { + foreach (var ch in input) + { + if (ch == '.') + Thread.Sleep(1000); + } + } + + } +} diff --git a/Messaging/src/Tutorials/Tutorial3/Sender/Program.cs b/Messaging/src/Tutorials/Tutorial3/Sender/Program.cs new file mode 100644 index 00000000..6760ce02 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial3/Sender/Program.cs @@ -0,0 +1,17 @@ +using Steeltoe.Messaging.RabbitMQ.Host; + +namespace Sender +{ + public class Program + { + public static void Main(string[] args) + { + RabbitMQHost.CreateDefaultBuilder(args) + .ConfigureServices(services => + { + services.AddHostedService(); + }) + .Build().Run(); + } + } +} \ No newline at end of file diff --git a/Messaging/src/Tutorials/Tutorial3/Sender/Properties/launchSettings.json b/Messaging/src/Tutorials/Tutorial3/Sender/Properties/launchSettings.json new file mode 100644 index 00000000..8ceaf50a --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial3/Sender/Properties/launchSettings.json @@ -0,0 +1,11 @@ +{ + "profiles": { + "Sender": { + "commandName": "Project", + "dotnetRunMessages": true, + "environmentVariables": { + "DOTNET_ENVIRONMENT": "Development" + } + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial3/Sender/Sender.csproj b/Messaging/src/Tutorials/Tutorial3/Sender/Sender.csproj new file mode 100644 index 00000000..ab51664e --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial3/Sender/Sender.csproj @@ -0,0 +1,14 @@ + + + + net6.0 + enable + enable + dotnet-Sender-C2D2E18A-2CEB-41A7-B14E-12B4C99EDB13 + + + + + + + diff --git a/Messaging/src/Tutorials/Tutorial3/Sender/Tut3Sender.cs b/Messaging/src/Tutorials/Tutorial3/Sender/Tut3Sender.cs new file mode 100644 index 00000000..1e49d747 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial3/Sender/Tut3Sender.cs @@ -0,0 +1,49 @@ +using Steeltoe.Messaging.RabbitMQ.Core; +using System.Text; + +namespace Sender +{ + public class Tut3Sender : BackgroundService + { + private readonly ILogger _logger; + private int dots = 0; + private int count = 0; + + internal const string FanoutExchangeName = "tut.fanout"; + private readonly RabbitTemplate _rabbitTemplate; + + public Tut3Sender(ILogger logger, RabbitTemplate rabbitTemplate) + { + _logger = logger; + _rabbitTemplate = rabbitTemplate; + } + + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + while (!stoppingToken.IsCancellationRequested) + { + _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); + var message = CreateMessage(); + await _rabbitTemplate.ConvertAndSendAsync(FanoutExchangeName, string.Empty, message); + _logger.LogInformation($"Sent '" + message + "'"); + await Task.Delay(1000, stoppingToken); + } + } + + private string CreateMessage() + { + StringBuilder builder = new StringBuilder("Hello"); + if (++dots == 4) + { + dots = 1; + } + for (int i = 0; i < dots; i++) + { + builder.Append('.'); + } + builder.Append(++count); + return builder.ToString(); + } + } +} \ No newline at end of file diff --git a/Messaging/src/Tutorials/Tutorial3/Sender/appsettings.Development.json b/Messaging/src/Tutorials/Tutorial3/Sender/appsettings.Development.json new file mode 100644 index 00000000..b2dcdb67 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial3/Sender/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.Hosting.Lifetime": "Information" + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial3/Sender/appsettings.json b/Messaging/src/Tutorials/Tutorial3/Sender/appsettings.json new file mode 100644 index 00000000..b2dcdb67 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial3/Sender/appsettings.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.Hosting.Lifetime": "Information" + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial3/Tutorial3.sln b/Messaging/src/Tutorials/Tutorial3/Tutorial3.sln new file mode 100644 index 00000000..512d086c --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial3/Tutorial3.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.2.32901.213 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Receiver", "Receiver\Receiver.csproj", "{706B9EBD-115F-4A58-B616-AC35C7AA470D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sender", "Sender\Sender.csproj", "{1BF76297-BC98-4C89-91E9-A06FEB0AC779}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {706B9EBD-115F-4A58-B616-AC35C7AA470D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {706B9EBD-115F-4A58-B616-AC35C7AA470D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {706B9EBD-115F-4A58-B616-AC35C7AA470D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {706B9EBD-115F-4A58-B616-AC35C7AA470D}.Release|Any CPU.Build.0 = Release|Any CPU + {1BF76297-BC98-4C89-91E9-A06FEB0AC779}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1BF76297-BC98-4C89-91E9-A06FEB0AC779}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1BF76297-BC98-4C89-91E9-A06FEB0AC779}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1BF76297-BC98-4C89-91E9-A06FEB0AC779}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {C635DCAA-3C1D-4D0C-BB99-A53064918345} + EndGlobalSection +EndGlobal diff --git a/Messaging/src/Tutorials/Tutorial4/Readme.md b/Messaging/src/Tutorials/Tutorial4/Readme.md new file mode 100644 index 00000000..6abe4454 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial4/Readme.md @@ -0,0 +1,305 @@ +# RabbitMQ Tutorial - Routing + +## Routing (using Steeltoe) + +> #### Prerequisites +> This tutorial assumes RabbitMQ is [downloaded](https://www.rabbitmq.com/download.html) and installed and running +> on `localhost` on the [standard port](https://www.rabbitmq.com/networking.html#ports) (`5672`). +> +> In case you use a different host, port or credentials, connections settings would require adjusting. +> +> #### Where to get help +> If you're having trouble going through this tutorial you can contact us through Github issues on our +> [Steeltoe Samples Repository](https://github.com/SteeltoeOSS/Samples). + +In the [previous tutorial](../Tutorial3/readme.md) we built a +simple fanout exchange. We were able to broadcast messages to many +receivers. + +In this tutorial we're going to add a feature to it - we're going to +make it possible to subscribe only to a subset of the messages. For +example, we will be able to direct only messages to the +certain colors of interest ("orange", "black", "green"), while still being +able to print all of the messages on the console. + + +Bindings +-------- + +In previous examples we were already creating bindings. You may recall +code like this: + +```csharp +[DeclareQueueBinding(Name = "tut.fanout.binding.queue1", ExchangeName = "tut.fanout", QueueName = "#{@queue1}")] +``` + +Remember, a binding is a relationship between an exchange and a queue. This can +be simply read as: the queue is interested in messages from this +exchange. + +Bindings can take an extra routing key parameter which we didn't use in the previous tutorial. +We can specify the key using the `RoutingKey` property on the `DeclareQueueBinding` attribute as shown below: + +```csharp +[DeclareQueueBinding(Name = "tut.direct.binding.queue1.orange", ExchangeName = "tut.direct", RoutingKey = "orange", QueueName = "#{@queue1}")] +``` + +The meaning of a routing key depends on the exchange type. The +`fanout` exchanges, which we used previously, simply ignored its +value. + +Direct exchange +--------------- + +Our messaging system from the previous tutorial broadcasts all messages +to all consumers. We want to extend that to allow filtering messages +based on their color type. For example, we may want a program which +writes log messages to the disk to only receive critical errors, and +not waste disk space on warning or info log messages. + +Before, we were using a `fanout` exchange, which doesn't give us much +flexibility - it's only capable of mindless broadcasting. + +In this tutorial We will use a `direct` exchange instead. The routing algorithm behind +a `direct` exchange is simple - a message goes to the queues whose +binding key exactly matches the routing key of the message. + +To illustrate that, consider the following setup: + +
+ Direct Exchange routing +
+ +In this setup, we can see the `direct` exchange `X` with two queues bound +to it. The first queue is bound with binding key `orange`, and the second +has two bindings, one with binding key `black` and the other one +with `green`. + +In such a setup a message published to the exchange with a routing key +`orange` will be routed to queue `Q1`. Messages with a routing key of `black` +or `green` will go to `Q2`. All other messages will be discarded. + + +Multiple bindings +----------------- +
+ Multiple Bindings +
+ +It is perfectly legal to bind multiple queues with the same binding +key. In our example we could add a binding between `X` and `Q1` with +binding key `black`. In that case, the `direct` exchange will behave +like `fanout` and will broadcast the message to all the matching +queues. A message with routing key `black` will be delivered to both +`Q1` and `Q2`. + +Here are the `DeclareQueueBinding` attributes that illustrate the above concepts. + +```csharp +[DeclareQueueBinding(Name = "tut.direct.binding.queue1.orange", ExchangeName = "tut.direct", RoutingKey = "orange", QueueName = "#{@queue1}")] +[DeclareQueueBinding(Name = "tut.direct.binding.queue1.black", ExchangeName = "tut.direct", RoutingKey = "black", QueueName = "#{@queue1}")] +[DeclareQueueBinding(Name = "tut.direct.binding.queue2.green", ExchangeName = "tut.direct", RoutingKey = "green", QueueName = "#{@queue2}")] +[DeclareQueueBinding(Name = "tut.direct.binding.queue2.black", ExchangeName = "tut.direct", RoutingKey = "black", QueueName = "#{@queue2}")] + +``` + +Publishing messages +------------- + +We'll use this model for our routing system. Instead of `fanout` we'll +send messages to a `direct` exchange defined using the attribute shown below: + +```csharp +[DeclareExchange(Name = "tut.direct", Type = ExchangeType.DIRECT)] +``` + +We will supply the color as a routing key in the `ConvertAndSendAsync()` method call. That way the receiving program will be able to select +the color it wants to receive (or subscribe to). + +Subscribing +----------- + +Receiving messages will work just like in the previous tutorial, with +one exception - we're going to create a new binding for each color +we're interested in. + +Here's what that looks like in the `Tut4Receiver`: + +```csharp +using Microsoft.Extensions.Logging; +using Steeltoe.Messaging.RabbitMQ.Attributes; +using Steeltoe.Messaging.RabbitMQ.Config; +using System.Diagnostics; + +namespace Receiver +{ + [DeclareExchange(Name = "tut.direct", Type = ExchangeType.DIRECT)] + [DeclareAnonymousQueue("queue1")] + [DeclareAnonymousQueue("queue2")] + [DeclareQueueBinding(Name = "tut.direct.binding.queue1.orange", ExchangeName = "tut.direct", RoutingKey = "orange", QueueName = "#{@queue1}")] + [DeclareQueueBinding(Name = "tut.direct.binding.queue1.black", ExchangeName = "tut.direct", RoutingKey = "black", QueueName = "#{@queue1}")] + [DeclareQueueBinding(Name = "tut.direct.binding.queue2.green", ExchangeName = "tut.direct", RoutingKey = "green", QueueName = "#{@queue2}")] + [DeclareQueueBinding(Name = "tut.direct.binding.queue2.black", ExchangeName = "tut.direct", RoutingKey = "black", QueueName = "#{@queue2}")] + internal class Tut4Receiver + { + private readonly ILogger _logger; + + public Tut4Receiver(ILogger logger) + { + _logger = logger; + } + .... + } +} +``` + +Putting it all together +----------------------- + +
+ Final routing: putting it all together. +
+ + +The code for our sender class (`Tut4Sender`) is: + +```csharp +using Steeltoe.Messaging.RabbitMQ.Core; +using System.Text; + +namespace Sender +{ + public class Tut4Sender : BackgroundService + { + internal const string DirectExchangeName = "tut.direct"; + + private readonly ILogger _logger; + private readonly RabbitTemplate _rabbitTemplate; + + private int index = 0; + private int count = 0; + + private readonly string[] keys = new string[] { "orange", "black", "green" }; + + public Tut4Sender(ILogger logger, RabbitTemplate rabbitTemplate) + { + _logger = logger; + _rabbitTemplate = rabbitTemplate; + } + + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + while (!stoppingToken.IsCancellationRequested) + { + _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); + StringBuilder builder = new StringBuilder("Hello to "); + if (++index == 3) + { + index = 0; + } + string key = keys[index]; + builder.Append(key).Append(' '); + builder.Append(++count); + var message = builder.ToString(); + + await _rabbitTemplate.ConvertAndSendAsync(DirectExchangeName, key, message); + _logger.LogInformation($"Sent '" + message + "'"); + await Task.Delay(1000, stoppingToken); + } + } + } +} +``` + +The code for receiver class (`Tut4Receiver`) is: + +```csharp +using Microsoft.Extensions.Logging; +using Steeltoe.Messaging.RabbitMQ.Attributes; +using Steeltoe.Messaging.RabbitMQ.Config; +using System.Diagnostics; + +namespace Receiver +{ + [DeclareExchange(Name = "tut.direct", Type = ExchangeType.DIRECT)] + [DeclareAnonymousQueue("queue1")] + [DeclareAnonymousQueue("queue2")] + [DeclareQueueBinding(Name = "tut.direct.binding.queue1.orange", ExchangeName = "tut.direct", RoutingKey = "orange", QueueName = "#{@queue1}")] + [DeclareQueueBinding(Name = "tut.direct.binding.queue1.black", ExchangeName = "tut.direct", RoutingKey = "black", QueueName = "#{@queue1}")] + [DeclareQueueBinding(Name = "tut.direct.binding.queue2.green", ExchangeName = "tut.direct", RoutingKey = "green", QueueName = "#{@queue2}")] + [DeclareQueueBinding(Name = "tut.direct.binding.queue2.black", ExchangeName = "tut.direct", RoutingKey = "black", QueueName = "#{@queue2}")] + internal class Tut4Receiver + { + private readonly ILogger _logger; + + public Tut4Receiver(ILogger logger) + { + _logger = logger; + } + + + [RabbitListener(Queue = "#{@queue1}")] + public void Receive1(string input) + { + Receive(input, 1); + } + + [RabbitListener(Queue = "#{@queue2}")] + public void Receive2(string input) + { + Receive(input, 2); + } + + private void Receive(string input, int receiver) + { + var watch = new Stopwatch(); + watch.Start(); + + DoWork(input); + + watch.Stop(); + + var time = watch.Elapsed; + _logger.LogInformation($"Received: {input} from queue: {receiver}, took: {time}"); + } + + private void DoWork(string input) + { + foreach (var ch in input) + { + if (ch == '.') + Thread.Sleep(1000); + } + } + } +} +``` + +Compile as usual, see [tutorial one](../Tutorial1/Readme.md) + +```bash +cd tutorials\tutorial4 +dotnet build +``` + +To run the receiver, execute the following commands: + +```bash +# receiver + +cd receiver +dotnet run +``` + +Open another shell to run the sender: + +```bash +# sender + +cd sender +dotnet run +``` + +Move on to [tutorial 5](../Tutorial5/readme.md) to find out how to listen +for messages based on a pattern. diff --git a/Messaging/src/Tutorials/Tutorial4/Receiver/Program.cs b/Messaging/src/Tutorials/Tutorial4/Receiver/Program.cs new file mode 100644 index 00000000..59703856 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial4/Receiver/Program.cs @@ -0,0 +1,24 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Steeltoe.Messaging.RabbitMQ.Config; +using Steeltoe.Messaging.RabbitMQ.Extensions; +using Steeltoe.Messaging.RabbitMQ.Host; + +namespace Receiver +{ + internal class Program + { + static void Main(string[] args) + { + RabbitMQHost.CreateDefaultBuilder(args) + .ConfigureServices((hostContext, services) => + { + // Add the rabbit listener + services.AddSingleton(); + services.AddRabbitListeners(); + }) + .Build() + .Run(); + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial4/Receiver/Receiver.csproj b/Messaging/src/Tutorials/Tutorial4/Receiver/Receiver.csproj new file mode 100644 index 00000000..f482b0d6 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial4/Receiver/Receiver.csproj @@ -0,0 +1,15 @@ + + + + Exe + net6.0 + enable + enable + + + + + + + + diff --git a/Messaging/src/Tutorials/Tutorial4/Receiver/Tut4Receiver.cs b/Messaging/src/Tutorials/Tutorial4/Receiver/Tut4Receiver.cs new file mode 100644 index 00000000..861d1d94 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial4/Receiver/Tut4Receiver.cs @@ -0,0 +1,59 @@ +using Microsoft.Extensions.Logging; +using Steeltoe.Messaging.RabbitMQ.Attributes; +using Steeltoe.Messaging.RabbitMQ.Config; +using System.Diagnostics; + +namespace Receiver +{ + [DeclareExchange(Name = "tut.direct", Type = ExchangeType.DIRECT)] + [DeclareAnonymousQueue("queue1")] + [DeclareAnonymousQueue("queue2")] + [DeclareQueueBinding(Name = "tut.direct.binding.queue1.orange", ExchangeName = "tut.direct", RoutingKey = "orange", QueueName = "#{@queue1}")] + [DeclareQueueBinding(Name = "tut.direct.binding.queue1.black", ExchangeName = "tut.direct", RoutingKey = "black", QueueName = "#{@queue1}")] + [DeclareQueueBinding(Name = "tut.direct.binding.queue2.green", ExchangeName = "tut.direct", RoutingKey = "green", QueueName = "#{@queue2}")] + [DeclareQueueBinding(Name = "tut.direct.binding.queue2.black", ExchangeName = "tut.direct", RoutingKey = "black", QueueName = "#{@queue2}")] + internal class Tut4Receiver + { + private readonly ILogger _logger; + + public Tut4Receiver(ILogger logger) + { + _logger = logger; + } + + + [RabbitListener(Queue = "#{@queue1}")] + public void Receive1(string input) + { + Receive(input, 1); + } + + [RabbitListener(Queue = "#{@queue2}")] + public void Receive2(string input) + { + Receive(input, 2); + } + + private void Receive(string input, int receiver) + { + var watch = new Stopwatch(); + watch.Start(); + + DoWork(input); + + watch.Stop(); + + var time = watch.Elapsed; + _logger.LogInformation($"Received: {input} from queue: {receiver}, took: {time}"); + } + + private void DoWork(string input) + { + foreach (var ch in input) + { + if (ch == '.') + Thread.Sleep(1000); + } + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial4/Sender/Program.cs b/Messaging/src/Tutorials/Tutorial4/Sender/Program.cs new file mode 100644 index 00000000..c095b17f --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial4/Sender/Program.cs @@ -0,0 +1,17 @@ +using Steeltoe.Messaging.RabbitMQ.Host; + +namespace Sender +{ + public class Program + { + public static void Main(string[] args) + { + RabbitMQHost.CreateDefaultBuilder(args) + .ConfigureServices(services => + { + services.AddHostedService(); + }) + .Build().Run(); + } + } +} \ No newline at end of file diff --git a/Messaging/src/Tutorials/Tutorial4/Sender/Properties/launchSettings.json b/Messaging/src/Tutorials/Tutorial4/Sender/Properties/launchSettings.json new file mode 100644 index 00000000..8ceaf50a --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial4/Sender/Properties/launchSettings.json @@ -0,0 +1,11 @@ +{ + "profiles": { + "Sender": { + "commandName": "Project", + "dotnetRunMessages": true, + "environmentVariables": { + "DOTNET_ENVIRONMENT": "Development" + } + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial4/Sender/Sender.csproj b/Messaging/src/Tutorials/Tutorial4/Sender/Sender.csproj new file mode 100644 index 00000000..4504dd2a --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial4/Sender/Sender.csproj @@ -0,0 +1,15 @@ + + + + net6.0 + enable + enable + dotnet-Sender-B7957B91-4F0F-4F6A-BF26-7DB15BCBF4D6 + + + + + + + + diff --git a/Messaging/src/Tutorials/Tutorial4/Sender/Tut4Sender.cs b/Messaging/src/Tutorials/Tutorial4/Sender/Tut4Sender.cs new file mode 100644 index 00000000..9f056aac --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial4/Sender/Tut4Sender.cs @@ -0,0 +1,46 @@ +using Steeltoe.Messaging.RabbitMQ.Core; +using System.Text; + +namespace Sender +{ + public class Tut4Sender : BackgroundService + { + internal const string DirectExchangeName = "tut.direct"; + + private readonly ILogger _logger; + private readonly RabbitTemplate _rabbitTemplate; + + private int index = 0; + private int count = 0; + + private readonly string[] keys = new string[] { "orange", "black", "green" }; + + public Tut4Sender(ILogger logger, RabbitTemplate rabbitTemplate) + { + _logger = logger; + _rabbitTemplate = rabbitTemplate; + } + + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + while (!stoppingToken.IsCancellationRequested) + { + _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); + StringBuilder builder = new StringBuilder("Hello to "); + if (++index == 3) + { + index = 0; + } + string key = keys[index]; + builder.Append(key).Append(' '); + builder.Append(++count); + var message = builder.ToString(); + + await _rabbitTemplate.ConvertAndSendAsync(DirectExchangeName, key, message); + _logger.LogInformation($"Sent '" + message + "'"); + await Task.Delay(1000, stoppingToken); + } + } + } +} \ No newline at end of file diff --git a/Messaging/src/Tutorials/Tutorial4/Sender/appsettings.Development.json b/Messaging/src/Tutorials/Tutorial4/Sender/appsettings.Development.json new file mode 100644 index 00000000..b2dcdb67 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial4/Sender/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.Hosting.Lifetime": "Information" + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial4/Sender/appsettings.json b/Messaging/src/Tutorials/Tutorial4/Sender/appsettings.json new file mode 100644 index 00000000..b2dcdb67 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial4/Sender/appsettings.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.Hosting.Lifetime": "Information" + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial4/Tutorial4.sln b/Messaging/src/Tutorials/Tutorial4/Tutorial4.sln new file mode 100644 index 00000000..07a96795 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial4/Tutorial4.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.2.32901.213 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Receiver", "Receiver\Receiver.csproj", "{C4000E5D-5B38-4462-BC6E-B801D4B15D10}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sender", "Sender\Sender.csproj", "{75D20A25-6377-4EBA-8F21-15C3E7EE485D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {C4000E5D-5B38-4462-BC6E-B801D4B15D10}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C4000E5D-5B38-4462-BC6E-B801D4B15D10}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C4000E5D-5B38-4462-BC6E-B801D4B15D10}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C4000E5D-5B38-4462-BC6E-B801D4B15D10}.Release|Any CPU.Build.0 = Release|Any CPU + {75D20A25-6377-4EBA-8F21-15C3E7EE485D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {75D20A25-6377-4EBA-8F21-15C3E7EE485D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {75D20A25-6377-4EBA-8F21-15C3E7EE485D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {75D20A25-6377-4EBA-8F21-15C3E7EE485D}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {3118EF1E-A208-4C86-AEAC-35AC83BB1224} + EndGlobalSection +EndGlobal diff --git a/Messaging/src/Tutorials/Tutorial5/Readme.md b/Messaging/src/Tutorials/Tutorial5/Readme.md new file mode 100644 index 00000000..71682c5f --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial5/Readme.md @@ -0,0 +1,299 @@ +# RabbitMQ Tutorial - Topics + +## Topics (using Steeltoe) + +> #### Prerequisites +> This tutorial assumes RabbitMQ is [downloaded](https://www.rabbitmq.com/download.html) and installed and running +> on `localhost` on the [standard port](https://www.rabbitmq.com/networking.html#ports) (`5672`). +> +> In case you use a different host, port or credentials, connections settings would require adjusting. +> +> #### Where to get help +> If you're having trouble going through this tutorial you can contact us through Github issues on our +> [Steeltoe Samples Repository](https://github.com/SteeltoeOSS/Samples). + + +In the [previous tutorial](../Tutorial4/readme.md) we improved our +messaging flexibility. Instead of using a `fanout` exchange only capable of +dummy broadcasting, we used a `direct` one, and gained a possibility +of selectively receiving the message based on the routing key. + +Although using the `direct` exchange improved our system, it still has +limitations - it can't do routing based on multiple criteria. + +In our messaging system we might want to subscribe to not only queues +based on the routing key, but also based on the source which produced +the message. +You might know this concept from the +[`syslog`](http://en.wikipedia.org/wiki/Syslog) unix tool, which +routes logs based on both severity (info/warn/crit...) and facility +(auth/cron/kern...). Our example is a little simpler than this. + +That example would give us a lot of flexibility - we may want to listen to +just critical errors coming from 'cron' but also all logs from 'kern'. + +To implement that flexibility in our logging system we need to learn +about a more complex `topic` exchange. + + +Topic exchange +-------------- + +Messages sent to a `topic` exchange can't have an arbitrary +`routing_key` - it must be a list of words, delimited by dots. The +words can be anything, but usually they specify some features +connected to the message. A few valid routing key examples: +"`stock.usd.nyse`", "`nyse.vmw`", "`quick.orange.rabbit`". There can be as +many words in the routing key as you like, up to the limit of 255 +bytes. + +The routing key associated with a binding must also be in the same form. The logic behind the +`topic` exchange is similar to a `direct` one - a message sent with a +particular routing key will be delivered to all the queues that are +bound with a matching binding key. However there are two important +special cases for routing keys associated with bindings. + + * `*` (star) can substitute for exactly one word. + * `#` (hash) can substitute for zero or more words. + +It's easiest to explain this in an example: + +
+ Topic Exchange illustration, which is all explained in the following text. +
+ +In this example, we're going to send messages which all describe +animals. The messages will be sent with a routing key that consists of +three words (two dots). The first word in the routing key +will describe speed, second a color and third a species: +"`..`". + +We created three bindings: Q1 is bound with binding key "`*.orange.*`" +and Q2 with "`*.*.rabbit`" and "`lazy.#`". + +These bindings can be summarized as: + + * Q1 is interested in all the orange animals. + * Q2 wants to hear everything about rabbits, and everything about lazy + animals. + +A message with a routing key set to "`quick.orange.rabbit`" +will be delivered to both queues. Message +"`lazy.orange.elephant`" also will go to both of them. On the other hand +"`quick.orange.fox`" will only go to the first queue, and +"`lazy.brown.fox`" only to the second. "`lazy.pink.rabbit`" will +be delivered to the second queue only once, even though it matches two bindings. +"`quick.brown.fox`" doesn't match any binding so it will be discarded. + +What happens if we break our contract and send a message with one or +four words, like "`orange`" or "`quick.orange.new.rabbit`"? Well, +these messages won't match any bindings and will be lost. + +On the other hand "`lazy.orange.new.rabbit`", even though it has four +words, will match the last binding and will be delivered to the second +queue. + +> #### Topic exchange +> +> Topic exchange is powerful and can behave like other exchanges. +> +> When a queue is bound with "`#`" (hash) binding key - it will receive +> all the messages, regardless of the routing key - like in `fanout` exchange. +> +> When special characters "`*`" (star) and "`#`" (hash) aren't used in bindings, +> the topic exchange will behave just like a `direct` one. + +Putting it all together +----------------------- + +We're going to use a `topic` exchange in our messaging system. We'll +start off with a working assumption that the routing keys will take +advantage of both wildcards and a hash tag. + +The code is almost the same as in the +[previous tutorial](../Tutorial4/readme.md). + +First let's configure all the RabbitMQ entities using the Steeltoe attributes: + +```csharp +using Microsoft.Extensions.Logging; +using Steeltoe.Messaging.RabbitMQ.Attributes; +using Steeltoe.Messaging.RabbitMQ.Config; +using System.Diagnostics; + +namespace Receiver +{ + + [DeclareExchange(Name = Program.TopicExchangeName, Type = ExchangeType.TOPIC)] + [DeclareAnonymousQueue("queue1")] + [DeclareAnonymousQueue("queue2")] + [DeclareQueueBinding(Name = "binding.queue1.orange", ExchangeName = Program.TopicExchangeName, RoutingKey = "*.orange.*", QueueName = "#{@queue1}")] + [DeclareQueueBinding(Name = "binding.queue1.rabbit", ExchangeName = Program.TopicExchangeName, RoutingKey = "*.*.rabbit", QueueName = "#{@queue1}")] + [DeclareQueueBinding(Name = "binding.queue2.lazy", ExchangeName = Program.TopicExchangeName, RoutingKey = "lazy.#", QueueName = "#{@queue2}")] + + internal class Tut5Receiver + { + private readonly ILogger _logger; + + public Tut5Receiver(ILogger logger) + { + _logger = logger; + } + ...... + } +} +``` + +The `Tut5Receiver` again uses the `RabbitListener` attribute to receive messages from the respective +topics. + + +```csharp +using Microsoft.Extensions.Logging; +using Steeltoe.Messaging.RabbitMQ.Attributes; +using Steeltoe.Messaging.RabbitMQ.Config; +using System.Diagnostics; + +namespace Receiver +{ + + [DeclareExchange(Name = Program.TopicExchangeName, Type = ExchangeType.TOPIC)] + [DeclareAnonymousQueue("queue1")] + [DeclareAnonymousQueue("queue2")] + [DeclareQueueBinding(Name = "binding.queue1.orange", ExchangeName = Program.TopicExchangeName, RoutingKey = "*.orange.*", QueueName = "#{@queue1}")] + [DeclareQueueBinding(Name = "binding.queue1.rabbit", ExchangeName = Program.TopicExchangeName, RoutingKey = "*.*.rabbit", QueueName = "#{@queue1}")] + [DeclareQueueBinding(Name = "binding.queue2.lazy", ExchangeName = Program.TopicExchangeName, RoutingKey = "lazy.#", QueueName = "#{@queue2}")] + + internal class Tut5Receiver + { + private readonly ILogger _logger; + + public Tut5Receiver(ILogger logger) + { + _logger = logger; + } + + [RabbitListener(Queue = "#{@queue1}")] + public void Receive1(string input) + { + Receive(input, 1); + } + + [RabbitListener(Queue = "#{@queue2}")] + public void Receive2(string input) + { + Receive(input, 2); + } + + private void Receive(string input, int receiver) + { + var watch = new Stopwatch(); + watch.Start(); + + DoWork(input); + + watch.Stop(); + + var time = watch.Elapsed; + _logger.LogInformation($"Received: {input} from queue: {receiver}, took: {time}"); + } + + private void DoWork(string input) + { + foreach (var ch in input) + { + if (ch == '.') + Thread.Sleep(1000); + } + } + } +} +``` + +The code for `Tut5Sender`: + +```csharp +using Steeltoe.Messaging.RabbitMQ.Core; +using System.Text; + +namespace Sender +{ + public class Tut5Sender : BackgroundService + { + internal const string TopicExchangeName = "tut.topic"; + + private readonly ILogger _logger; + private readonly RabbitTemplate _rabbitTemplate; + + private int index = 0; + private int count = 0; + + private readonly string[] keys = new string[] { + "quick.orange.rabbit", + "lazy.orange.elephant", + "quick.orange.fox", + "lazy.brown.fox", + "lazy.pink.rabbit", + "quick.brown.fox"}; + + public Tut5Sender(ILogger logger, RabbitTemplate rabbitTemplate) + { + _logger = logger; + _rabbitTemplate = rabbitTemplate; + } + + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + while (!stoppingToken.IsCancellationRequested) + { + _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); + StringBuilder builder = new StringBuilder("Hello to "); + if (++index == keys.Length) + { + index = 0; + } + string key = keys[index]; + builder.Append(key).Append(' '); + builder.Append(++count); + var message = builder.ToString(); + + await _rabbitTemplate.ConvertAndSendAsync(TopicExchangeName, key, message); + _logger.LogInformation($"Sent '" + message + "'"); + await Task.Delay(1000, stoppingToken); + } + } + } +} +``` + +Compile as usual, see [tutorial one](../Tutorial1/readme.md) + +```bash +cd tutorials\tutorial5 +dotnet build +``` + +To run the receiver, execute the following commands: + +```bash +# receiver + +cd receiver +dotnet run +``` + +Open another shell to run the sender: + +```bash +# sender + +cd sender +dotnet run +``` +Have fun playing with these programs. Note that the code doesn't make +any assumption about the routing or binding keys, you may want to play +with more than two routing key parameters. + +Next, find out how to do a round trip message as a remote procedure call (RPC) +in [tutorial 6](../Tutorial6/readme.md) diff --git a/Messaging/src/Tutorials/Tutorial5/Receiver/Program.cs b/Messaging/src/Tutorials/Tutorial5/Receiver/Program.cs new file mode 100644 index 00000000..2d7c3551 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial5/Receiver/Program.cs @@ -0,0 +1,25 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Steeltoe.Messaging.RabbitMQ.Extensions; +using Steeltoe.Messaging.RabbitMQ.Host; + +namespace Receiver +{ + internal class Program + { + internal const string TopicExchangeName = "tut.topic"; + + static void Main(string[] args) + { + RabbitMQHost.CreateDefaultBuilder(args) + .ConfigureServices((hostContext, services) => + { + // Add the rabbit listener + services.AddSingleton(); + services.AddRabbitListeners(); + }) + .Build() + .Run(); + } + } +} \ No newline at end of file diff --git a/Messaging/src/Tutorials/Tutorial5/Receiver/Receiver.csproj b/Messaging/src/Tutorials/Tutorial5/Receiver/Receiver.csproj new file mode 100644 index 00000000..cf1eeebf --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial5/Receiver/Receiver.csproj @@ -0,0 +1,13 @@ + + + + Exe + net6.0 + enable + enable + + + + + + diff --git a/Messaging/src/Tutorials/Tutorial5/Receiver/Tut5Receiver.cs b/Messaging/src/Tutorials/Tutorial5/Receiver/Tut5Receiver.cs new file mode 100644 index 00000000..447aa7bb --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial5/Receiver/Tut5Receiver.cs @@ -0,0 +1,59 @@ +using Microsoft.Extensions.Logging; +using Steeltoe.Messaging.RabbitMQ.Attributes; +using Steeltoe.Messaging.RabbitMQ.Config; +using System.Diagnostics; + +namespace Receiver +{ + + [DeclareExchange(Name = Program.TopicExchangeName, Type = ExchangeType.TOPIC)] + [DeclareAnonymousQueue("queue1")] + [DeclareAnonymousQueue("queue2")] + [DeclareQueueBinding(Name = "binding.queue1.orange", ExchangeName = Program.TopicExchangeName, RoutingKey = "*.orange.*", QueueName = "#{@queue1}")] + [DeclareQueueBinding(Name = "binding.queue1.rabbit", ExchangeName = Program.TopicExchangeName, RoutingKey = "*.*.rabbit", QueueName = "#{@queue1}")] + [DeclareQueueBinding(Name = "binding.queue2.lazy", ExchangeName = Program.TopicExchangeName, RoutingKey = "lazy.#", QueueName = "#{@queue2}")] + + internal class Tut5Receiver + { + private readonly ILogger _logger; + + public Tut5Receiver(ILogger logger) + { + _logger = logger; + } + + [RabbitListener(Queue = "#{@queue1}")] + public void Receive1(string input) + { + Receive(input, 1); + } + + [RabbitListener(Queue = "#{@queue2}")] + public void Receive2(string input) + { + Receive(input, 2); + } + + private void Receive(string input, int receiver) + { + var watch = new Stopwatch(); + watch.Start(); + + DoWork(input); + + watch.Stop(); + + var time = watch.Elapsed; + _logger.LogInformation($"Received: {input} from queue: {receiver}, took: {time}"); + } + + private void DoWork(string input) + { + foreach (var ch in input) + { + if (ch == '.') + Thread.Sleep(1000); + } + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial5/Sender/Program.cs b/Messaging/src/Tutorials/Tutorial5/Sender/Program.cs new file mode 100644 index 00000000..53d3b317 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial5/Sender/Program.cs @@ -0,0 +1,17 @@ +using Steeltoe.Messaging.RabbitMQ.Host; + +namespace Sender +{ + public class Program + { + public static void Main(string[] args) + { + RabbitMQHost.CreateDefaultBuilder(args) + .ConfigureServices(services => + { + services.AddHostedService(); + }) + .Build().Run(); + } + } +} \ No newline at end of file diff --git a/Messaging/src/Tutorials/Tutorial5/Sender/Properties/launchSettings.json b/Messaging/src/Tutorials/Tutorial5/Sender/Properties/launchSettings.json new file mode 100644 index 00000000..8ceaf50a --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial5/Sender/Properties/launchSettings.json @@ -0,0 +1,11 @@ +{ + "profiles": { + "Sender": { + "commandName": "Project", + "dotnetRunMessages": true, + "environmentVariables": { + "DOTNET_ENVIRONMENT": "Development" + } + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial5/Sender/Sender.csproj b/Messaging/src/Tutorials/Tutorial5/Sender/Sender.csproj new file mode 100644 index 00000000..c210aa04 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial5/Sender/Sender.csproj @@ -0,0 +1,14 @@ + + + + net6.0 + enable + enable + dotnet-Sender-98F382B2-A4E4-4F1F-A675-D9A2E3D611BC + + + + + + + diff --git a/Messaging/src/Tutorials/Tutorial5/Sender/Tut5Sender.cs b/Messaging/src/Tutorials/Tutorial5/Sender/Tut5Sender.cs new file mode 100644 index 00000000..cea3ae9c --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial5/Sender/Tut5Sender.cs @@ -0,0 +1,52 @@ +using Steeltoe.Messaging.RabbitMQ.Core; +using System.Text; + +namespace Sender +{ + public class Tut5Sender : BackgroundService + { + internal const string TopicExchangeName = "tut.topic"; + + private readonly ILogger _logger; + private readonly RabbitTemplate _rabbitTemplate; + + private int index = 0; + private int count = 0; + + private readonly string[] keys = new string[] { + "quick.orange.rabbit", + "lazy.orange.elephant", + "quick.orange.fox", + "lazy.brown.fox", + "lazy.pink.rabbit", + "quick.brown.fox"}; + + public Tut5Sender(ILogger logger, RabbitTemplate rabbitTemplate) + { + _logger = logger; + _rabbitTemplate = rabbitTemplate; + } + + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + while (!stoppingToken.IsCancellationRequested) + { + _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); + StringBuilder builder = new StringBuilder("Hello to "); + if (++index == keys.Length) + { + index = 0; + } + string key = keys[index]; + builder.Append(key).Append(' '); + builder.Append(++count); + var message = builder.ToString(); + + await _rabbitTemplate.ConvertAndSendAsync(TopicExchangeName, key, message); + _logger.LogInformation($"Sent '" + message + "'"); + await Task.Delay(1000, stoppingToken); + } + } + } +} \ No newline at end of file diff --git a/Messaging/src/Tutorials/Tutorial5/Sender/appsettings.Development.json b/Messaging/src/Tutorials/Tutorial5/Sender/appsettings.Development.json new file mode 100644 index 00000000..b2dcdb67 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial5/Sender/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.Hosting.Lifetime": "Information" + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial5/Sender/appsettings.json b/Messaging/src/Tutorials/Tutorial5/Sender/appsettings.json new file mode 100644 index 00000000..b2dcdb67 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial5/Sender/appsettings.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.Hosting.Lifetime": "Information" + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial5/Tutorial5.sln b/Messaging/src/Tutorials/Tutorial5/Tutorial5.sln new file mode 100644 index 00000000..ec852570 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial5/Tutorial5.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.2.32901.213 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Receiver", "Receiver\Receiver.csproj", "{334ACB3A-F425-426F-929E-2B92A6EA5F7D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sender", "Sender\Sender.csproj", "{3A1ADF7E-4E0A-4456-94EC-FCD1F897E1EC}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {334ACB3A-F425-426F-929E-2B92A6EA5F7D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {334ACB3A-F425-426F-929E-2B92A6EA5F7D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {334ACB3A-F425-426F-929E-2B92A6EA5F7D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {334ACB3A-F425-426F-929E-2B92A6EA5F7D}.Release|Any CPU.Build.0 = Release|Any CPU + {3A1ADF7E-4E0A-4456-94EC-FCD1F897E1EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3A1ADF7E-4E0A-4456-94EC-FCD1F897E1EC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3A1ADF7E-4E0A-4456-94EC-FCD1F897E1EC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3A1ADF7E-4E0A-4456-94EC-FCD1F897E1EC}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {5C1E0445-B538-4F88-B3A9-394B9D75ABD6} + EndGlobalSection +EndGlobal diff --git a/Messaging/src/Tutorials/Tutorial6/Readme.md b/Messaging/src/Tutorials/Tutorial6/Readme.md new file mode 100644 index 00000000..8195c0d4 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial6/Readme.md @@ -0,0 +1,302 @@ +# RabbitMQ Tutorial - Remote procedure call (RPC) + +## Remote procedure call (using Steeltoe) + +> #### Prerequisites +> This tutorial assumes RabbitMQ is [downloaded](https://www.rabbitmq.com/download.html) and installed and running +> on `localhost` on the [standard port](https://www.rabbitmq.com/networking.html#ports) (`5672`). +> +> In case you use a different host, port or credentials, connections settings would require adjusting. +> +> #### Where to get help +> If you're having trouble going through this tutorial you can contact us through Github issues on our +> [Steeltoe Samples Repository](https://github.com/SteeltoeOSS/Samples). + + +In the [second tutorial](../Tutorial2/readme.md) we learned how to +use _Work Queues_ to distribute time-consuming tasks among multiple +workers. + +But what if we need to run a function on a remote computer and wait for +the result? Well, that's a different story. This pattern is commonly +known as _Remote Procedure Call_ or _RPC_. + +In this tutorial we're going to use RabbitMQ to build an RPC system: a +client and a scalable RPC server. As we don't have any time-consuming +tasks that are worth distributing, we're going to create a dummy RPC +service that returns Fibonacci numbers. + +## Client interface + +Normally when we talk about RPC's, we talk in terms of an RPC "Client" and "Server". +In the context of sending and receiving, our Sender will become the RPC "Client" and our Receiver will be our RPC "Server". +When the sender calls the server we will get back the fibonacci of the argument we call with. Here is how the sender will use +the `RabbitTemplate` to invoke the server. + +```csharp + int result = await _rabbitTemplate.ConvertSendAndReceiveAsync(RPCExchangeName, "rpc", start++); + _logger.LogInformation($"Got result: {result}"); +``` + +> #### A note on RPC +> +> Although RPC is a pretty common pattern in computing, it's often criticised. +> The problems arise when a programmer is not aware +> whether a function call is local or if it's a slow RPC. Confusions +> like that result in an unpredictable system and adds unnecessary +> complexity to debug. Instead of simplifying software, misused RPC +> can result in unmaintainable spaghetti code. +> +> Bearing that in mind, consider the following advice: +> +> * Make sure it's obvious which function call is local and which is remote. +> * Document your system. Make the dependencies between components clear. +> * Handle error cases. How should the client react when the RPC server is +> down for a long time? +> +> When in doubt avoid RPC. If you can, you should use an asynchronous +> pipeline - instead of RPC-like blocking, results are asynchronously +> pushed to a next computation stage. + + +## Callback queue + +In general doing RPC over RabbitMQ is easy. A client sends a request +message and a server replies with a response message. In order to +receive a response we need to send a 'callback' queue address with the +request. Steeltoe's `RabbitTemplate` handles the callback queue for +us when we use the above `ConvertSendAndReceiveAsync()` method. There is +no need to do any other setup when using the `RabbitTemplate`. +For a thorough explanation please see [Request/Reply Message](https://docs.steeltoe.io/api/v3/messaging/rabbitmq-reference.html#request-and-reply-messaging). + +> #### Message properties +> +> The AMQP 0-9-1 protocol predefines a set of 14 properties that go with +> a message. Most of the properties are rarely used, with the exception of +> the following: +> +> * `deliveryMode`: Marks a message as persistent (with a value of `2`) +> or transient (any other value). You may remember this property +> from [the second tutorial](../Tutorial2/readme.md). +> * `contentType`: Used to describe the mime-type of the encoding. +> For example for the often used JSON encoding it is a good practice +> to set this property to: `application/json`. +> * `replyTo`: Commonly used to name a callback queue. +> * `correlationId`: Useful to correlate RPC responses with requests. + +## Correlation Id + +Steeltoe allows you to focus on the message style you're working +with and hide the details of message plumbing required to support +this style. For example, typically the native client would +create a callback queue for every RPC request. That's pretty +inefficient so an alternative is to create a single callback +queue per client. + +That raises a new issue, having received a response in that queue it's +not clear to which request the response belongs. That's when the +`correlationId` property is used. Steeltoe automatically sets +a unique value for every request. In addition it handles the details +of matching the response with the correct correlationID. + +One reason that Steeltoe makes RPC style easier over RabbitMQ is that sometimes +you may want to ignore unknown messages in the callback +queue, rather than failing with an error. It's due to a possibility of +a race condition on the server side. Although unlikely, it is possible +that the RPC server will die just after sending us the answer, but +before sending an acknowledgment message for the request. If that +happens, the restarted RPC server will process the request again. +Steeltoe handles the duplicate responses gracefully, +and the RPC should ideally be idempotent. + +### Summary + +
+ Summary illustration, which is described in the following bullet points. +
+ +Our RPC will work like this: + + * We will setup a new `DirectExchange` + * The client will leverage the `ConvertSendAndReceive` method, passing the exchange + name, the routingKey, and the message. + * The request is sent to an RPC queue `tut.rpc`. + * The RPC worker (i.e. Server) is waiting for requests on that queue. + When a request appears, it performs the task and returns a message with the + result back to the client, using the queue from the `replyTo` field. + * The client waits for data on the callback queue. When a message + appears, it checks the `correlationId` property. If it matches + the value from the request it returns the response to the + application. Again, this is done automagically via the Steeltoe `RabbitTemplate`. + +Putting it all together +----------------------- + +The Fibonacci task is a `RabbitListener` and is defined as: + +```csharp + [RabbitListener(Queue = "tut.rpc.requests")] + // [SendTo("tut.rpc.replies")] used when the client doesn't set replyTo. + public int Fibonacci(int n) + { + _logger.LogInformation($"Received request for {n}"); + var result = Fib(n); + _logger.LogInformation($"Returning {result}"); + return result; + } + + private int Fib(int n) + { + return n == 0 ? 0 : n == 1 ? 1 : (Fib(n - 1) + Fib(n - 2)); + } +``` + +We declare our Fibonacci function. It assumes only valid positive integer input. +(Don't expect this one to work for big numbers, +and it's probably the slowest recursive implementation possible). + +The code to configure the RabbitMQ entities looks like this: + +```csharp +[DeclareQueue(Name = "tut.rpc.requests")] +[DeclareExchange(Name = Program.RPCExchangeName, Type = ExchangeType.DIRECT)] +[DeclareQueueBinding(Name ="binding.rpc.queue.exchange", QueueName = "tut.rpc.requests", ExchangeName = Program.RPCExchangeName, RoutingKey = "rpc")] +``` + +The server code is rather straightforward: + + * As usual we start annotating our receiver method with a `RabbitListener` + and defining the RabbitMQ entities using the [Declare****()] attributes + * Our Fibonacci method calls Fib() with the payload parameter and returns + the result + +The code for our RPC server: + +```csharp +using Microsoft.Extensions.Logging; +using Steeltoe.Messaging.RabbitMQ.Attributes; +using Steeltoe.Messaging.RabbitMQ.Config; + +namespace Receiver +{ + [DeclareQueue(Name = "tut.rpc.requests")] + [DeclareExchange(Name = Program.RPCExchangeName, Type = ExchangeType.DIRECT)] + [DeclareQueueBinding(Name ="binding.rpc.queue.exchange", QueueName = "tut.rpc.requests", ExchangeName = Program.RPCExchangeName, RoutingKey = "rpc")] + internal class Tut6Receiver + { + private readonly ILogger _logger; + + public Tut6Receiver(ILogger logger) + { + _logger = logger; + } + + [RabbitListener(Queue = "tut.rpc.requests")] + // [SendTo("tut.rpc.replies")] used when the client doesn't set replyTo. + public int Fibonacci(int n) + { + _logger.LogInformation($"Received request for {n}"); + var result = Fib(n); + _logger.LogInformation($"Returning {result}"); + return result; + } + + private int Fib(int n) + { + return n == 0 ? 0 : n == 1 ? 1 : (Fib(n - 1) + Fib(n - 2)); + } + } +} +``` + + + +The client code is as easy as the server: + + * We inject the `RabbitTemplate` service + * We invoke `template.ConvertSendAndReceiveAsync()` with the parameters + exchange name, routing key and message. + * We print the result + +```csharp +using Steeltoe.Messaging.RabbitMQ.Core; + +namespace Sender +{ + public class Tut6Sender : BackgroundService + { + internal const string RPCExchangeName = "tut.rpc"; + private readonly ILogger _logger; + private readonly RabbitTemplate _rabbitTemplate; + private int start = 0; + + public Tut6Sender(ILogger logger, RabbitTemplate rabbitTemplate) + { + _logger = logger; + _rabbitTemplate = rabbitTemplate; + } + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + while (!stoppingToken.IsCancellationRequested) + { + _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); + _logger.LogInformation($"Requesting Fib({start})"); + int result = await _rabbitTemplate.ConvertSendAndReceiveAsync(RPCExchangeName, "rpc", start++); + _logger.LogInformation($"Got result: {result}"); + await Task.Delay(1000, stoppingToken); + } + } + } +} +``` + +Compile as usual, see [tutorial one](../Tutorial1/Readme.md) + +```bash +cd tutorials\tutorial6 +dotnet build +``` + +To run the server, execute the following commands: + +```bash +# server + +cd receiver +dotnet run +``` + +To request a fibonacci number run the client: + +```bash +# client + +cd sender +dotnet run +``` + +The design presented here is not the only possible implementation of a RPC +service, but it has some important advantages: + + * If the RPC server is too slow, you can scale up by just running + another one. Try running a second `RPC Server` in a new console. + * On the client side, the RPC requires sending and + receiving only one message with one method. No synchronous calls + like `queueDeclare` are required. As a result the RPC client needs + only one network round trip for a single RPC request. + +Our code is still pretty simplistic and doesn't try to solve more +complex (but important) problems, like: + + * How should the client react if there are no servers running? + * Should a client have some kind of timeout for the RPC? + * If the server malfunctions and raises an exception, should it be + forwarded to the client? + * Protecting against invalid incoming messages + (eg checking bounds, type) before processing. + + +Next, find out how to use publisher confirms +in [tutorial 7](../Tutorial7/readme.md) + diff --git a/Messaging/src/Tutorials/Tutorial6/Receiver/Program.cs b/Messaging/src/Tutorials/Tutorial6/Receiver/Program.cs new file mode 100644 index 00000000..acf1f681 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial6/Receiver/Program.cs @@ -0,0 +1,24 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Steeltoe.Messaging.RabbitMQ.Extensions; +using Steeltoe.Messaging.RabbitMQ.Host; + +namespace Receiver +{ + internal class Program + { + internal const string RPCExchangeName = "tut.rpc"; + static void Main(string[] args) + { + RabbitMQHost.CreateDefaultBuilder(args) + .ConfigureServices((hostContext, services) => + { + // Add the rabbit listener + services.AddSingleton(); + services.AddRabbitListeners(); + }) + .Build() + .Run(); + } + } +} \ No newline at end of file diff --git a/Messaging/src/Tutorials/Tutorial6/Receiver/Receiver.csproj b/Messaging/src/Tutorials/Tutorial6/Receiver/Receiver.csproj new file mode 100644 index 00000000..cf1eeebf --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial6/Receiver/Receiver.csproj @@ -0,0 +1,13 @@ + + + + Exe + net6.0 + enable + enable + + + + + + diff --git a/Messaging/src/Tutorials/Tutorial6/Receiver/Tut6Receiver.cs b/Messaging/src/Tutorials/Tutorial6/Receiver/Tut6Receiver.cs new file mode 100644 index 00000000..705f0514 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial6/Receiver/Tut6Receiver.cs @@ -0,0 +1,34 @@ +using Microsoft.Extensions.Logging; +using Steeltoe.Messaging.RabbitMQ.Attributes; +using Steeltoe.Messaging.RabbitMQ.Config; + +namespace Receiver +{ + [DeclareQueue(Name = "tut.rpc.requests")] + [DeclareExchange(Name = Program.RPCExchangeName, Type = ExchangeType.DIRECT)] + [DeclareQueueBinding(Name ="binding.rpc.queue.exchange", QueueName = "tut.rpc.requests", ExchangeName = Program.RPCExchangeName, RoutingKey = "rpc")] + internal class Tut6Receiver + { + private readonly ILogger _logger; + + public Tut6Receiver(ILogger logger) + { + _logger = logger; + } + + [RabbitListener(Queue = "tut.rpc.requests")] + // [SendTo("tut.rpc.replies")] used when the client doesn't set replyTo. + public int Fibonacci(int n) + { + _logger.LogInformation($"Received request for {n}"); + var result = Fib(n); + _logger.LogInformation($"Returning {result}"); + return result; + } + + private int Fib(int n) + { + return n == 0 ? 0 : n == 1 ? 1 : (Fib(n - 1) + Fib(n - 2)); + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial6/Sender/Program.cs b/Messaging/src/Tutorials/Tutorial6/Sender/Program.cs new file mode 100644 index 00000000..54afabba --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial6/Sender/Program.cs @@ -0,0 +1,16 @@ +using Steeltoe.Messaging.RabbitMQ.Host; +namespace Sender +{ + public class Program + { + public static void Main(string[] args) + { + RabbitMQHost.CreateDefaultBuilder(args) + .ConfigureServices(services => + { + services.AddHostedService(); + }) + .Build().Run(); + } + } +} \ No newline at end of file diff --git a/Messaging/src/Tutorials/Tutorial6/Sender/Properties/launchSettings.json b/Messaging/src/Tutorials/Tutorial6/Sender/Properties/launchSettings.json new file mode 100644 index 00000000..8ceaf50a --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial6/Sender/Properties/launchSettings.json @@ -0,0 +1,11 @@ +{ + "profiles": { + "Sender": { + "commandName": "Project", + "dotnetRunMessages": true, + "environmentVariables": { + "DOTNET_ENVIRONMENT": "Development" + } + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial6/Sender/Sender.csproj b/Messaging/src/Tutorials/Tutorial6/Sender/Sender.csproj new file mode 100644 index 00000000..4940ae6d --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial6/Sender/Sender.csproj @@ -0,0 +1,14 @@ + + + + net6.0 + enable + enable + dotnet-Sender-CD180ADB-D917-4FB7-BB6C-8891BC414B49 + + + + + + + diff --git a/Messaging/src/Tutorials/Tutorial6/Sender/Tut6Sender.cs b/Messaging/src/Tutorials/Tutorial6/Sender/Tut6Sender.cs new file mode 100644 index 00000000..53972d16 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial6/Sender/Tut6Sender.cs @@ -0,0 +1,30 @@ +using Steeltoe.Messaging.RabbitMQ.Core; + +namespace Sender +{ + public class Tut6Sender : BackgroundService + { + internal const string RPCExchangeName = "tut.rpc"; + private readonly ILogger _logger; + private readonly RabbitTemplate _rabbitTemplate; + private int start = 0; + + public Tut6Sender(ILogger logger, RabbitTemplate rabbitTemplate) + { + _logger = logger; + _rabbitTemplate = rabbitTemplate; + } + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + while (!stoppingToken.IsCancellationRequested) + { + _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); + _logger.LogInformation($"Requesting Fib({start})"); + int result = await _rabbitTemplate.ConvertSendAndReceiveAsync(RPCExchangeName, "rpc", start++); + _logger.LogInformation($"Got result: {result}"); + await Task.Delay(1000, stoppingToken); + } + } + } +} \ No newline at end of file diff --git a/Messaging/src/Tutorials/Tutorial6/Sender/appsettings.Development.json b/Messaging/src/Tutorials/Tutorial6/Sender/appsettings.Development.json new file mode 100644 index 00000000..b2dcdb67 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial6/Sender/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.Hosting.Lifetime": "Information" + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial6/Sender/appsettings.json b/Messaging/src/Tutorials/Tutorial6/Sender/appsettings.json new file mode 100644 index 00000000..b2dcdb67 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial6/Sender/appsettings.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.Hosting.Lifetime": "Information" + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial6/Tutorial6.sln b/Messaging/src/Tutorials/Tutorial6/Tutorial6.sln new file mode 100644 index 00000000..ee573a3e --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial6/Tutorial6.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.2.32901.213 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Receiver", "Receiver\Receiver.csproj", "{DFF091CA-D53E-4852-8742-A986136407EE}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sender", "Sender\Sender.csproj", "{7566EA8A-D308-4B97-BBDC-4759C1275777}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {DFF091CA-D53E-4852-8742-A986136407EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DFF091CA-D53E-4852-8742-A986136407EE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DFF091CA-D53E-4852-8742-A986136407EE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DFF091CA-D53E-4852-8742-A986136407EE}.Release|Any CPU.Build.0 = Release|Any CPU + {7566EA8A-D308-4B97-BBDC-4759C1275777}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7566EA8A-D308-4B97-BBDC-4759C1275777}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7566EA8A-D308-4B97-BBDC-4759C1275777}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7566EA8A-D308-4B97-BBDC-4759C1275777}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {F50157D4-E71D-4583-AD8D-5DA2EE3F792C} + EndGlobalSection +EndGlobal diff --git a/Messaging/src/Tutorials/Tutorial7/Readme.md b/Messaging/src/Tutorials/Tutorial7/Readme.md new file mode 100644 index 00000000..e342a3d2 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial7/Readme.md @@ -0,0 +1,470 @@ +# RabbitMQ Tutorial - Reliable Publishing with Publisher Confirms + +## Publisher Confirms (using Steeltoe) + +> #### Prerequisites +> This tutorial assumes RabbitMQ is [downloaded](https://www.rabbitmq.com/download.html) and installed and running +> on `localhost` on the [standard port](https://www.rabbitmq.com/networking.html#ports) (`5672`). +> +> In case you use a different host, port or credentials, connections settings would require adjusting. +> +> #### Where to get help +> If you're having trouble going through this tutorial you can contact us through Github issues on our +> [Steeltoe Samples Repository](https://github.com/SteeltoeOSS/Samples). + +[Publisher confirms](https://www.rabbitmq.com/confirms.html#publisher-confirms) +are a RabbitMQ extension to implement reliable +publishing. When publisher confirms are enabled on a channel, +messages the client publishes are confirmed asynchronously +by the broker, meaning they have been taken care of on the server +side. + +### Overview + +In this tutorial we're going to use publisher confirms to make +sure published messages have safely reached the broker. We will cover several strategies to using publisher confirms and explain their pros and cons. + + +### Enabling Publisher Confirms on a Channel + +Publisher confirms are a RabbitMQ extension to the AMQP 0.9.1 protocol, +so they are not enabled by default. Publisher confirms are +enabled at the channel level of a connection to the RabbitMQ broker. + +Remember from the first tutorial we explained that Steeltoe adds to the service container a Caching zvonnection Factory that is used to create and cache connections to the RabbitMQ broker. By default, all of the Steeltoe RabbitMQ components (e.g. RabbitTemplate) use the factory when interacting with the broker (i.e. creating connections and channels). + +By default the factory does not create connections/channels that have publisher confirms enabled. So in order to use publisher confirms in Steeltoe we need to add an additional connection factory to the service container configured with publisher confirms enabled. And we also then need to add an additional `RabbitTemplate` that is configured to use this additional connection factory. + +We do that when configuring the services in the `RabbitMQHost` as follows: + +```csharp +using Steeltoe.Messaging.RabbitMQ.Config; +using Steeltoe.Messaging.RabbitMQ.Connection; +using Steeltoe.Messaging.RabbitMQ.Extensions; +using Steeltoe.Messaging.RabbitMQ.Host; +namespace Sender +{ + public class Program + { + internal const string QueueName = "hello"; + public static void Main(string[] args) + { + RabbitMQHost.CreateDefaultBuilder(args) + .ConfigureServices(services => + { + // Add queue to service container to be declared + services.AddRabbitQueue(new Queue(QueueName)); + + // Add a connection factory with the name "publisherConfirmReturnsFactory" + // and configure it to use correlated publisher confirms + services.AddRabbitConnectionFactory("publisherConfirmReturnsFactory", (p, ccf) => + { + ccf.IsPublisherReturns = true; + ccf.PublisherConfirmType = CachingConnectionFactory.ConfirmType.CORRELATED; + }); + + // Add an additional RabbitTemplate with the name "confirmReturnsTemplate" + // and configure it to use the above connection factory and mandatory delivery + services.AddRabbitTemplate("confirmReturnsTemplate", (p, template) => + { + var ccf = p.GetRabbitConnectionFactory("publisherConfirmReturnsFactory"); + template.ConnectionFactory = ccf; + template.Mandatory = true; + }); + + services.AddHostedService(); + }) + .Build() + .Run(); + } + } +} +``` + +Once this is done, then in our Sender we can use the following code to obtain the named `RabbitTemplate` which we configured properly above. + +```csharp +namespace Sender +{ + public class Tut7Sender : BackgroundService, IReturnCallback, IConfirmCallback + { + private readonly ILogger _logger; + private readonly RabbitTemplate _rabbitTemplate; + + public Tut7Sender(ILogger logger, IServiceProvider provider) + { + _logger = logger; + _rabbitTemplate = provider.GetRabbitTemplate("confirmReturnsTemplate"); + + .... + } + } +} + +``` + +### Strategy #1: Publishing Messages Individually + +Let's start with the simplest approach to publishing with confirms, +that is, publishing a message and waiting synchronously for its confirmation: + +```csharp +while (ThereAreMessagesToPublish()) { + .... + _rabbitTemplate.ConvertAndSend(QueueName, (object)"Hello World!"); + + // Wait up to 5 seconds for confirmation + _rabbitTemplate.WaitForConfirmsOrDie(5000); +} +``` + +In the previous example we publish a message as usual and wait for its +confirmation with the `Channel#WaitForConfirmsOrDie(long)` method. +The method returns as soon as the message has been confirmed. If the +message is not confirmed within the timeout or if it is nack-ed (meaning +the broker could not take care of it for some reason), the method will +throw an exception. The handling of the exception usually consists +in logging an error message and/or retrying to send the message. + +This technique is very straightforward but also has a major drawback: +it **significantly slows down publishing**, as the confirmation of a message blocks the publishing +of all subsequent messages. This approach is not going to deliver throughput of +more than a few hundreds of published messages per second. Nevertheless, this can be +good enough for some applications. + +> #### Are Publisher Confirms Asynchronous? +> +> We mentioned at the beginning that the broker confirms published +> messages asynchronously but in the first example the code waits +> synchronously until the message is confirmed. The client actually +> receives confirms asynchronously and unblocks the call to `WaitForConfirmsOrDie` +> accordingly. Think of `WaitForConfirmsOrDie` as a synchronous helper +> which relies on asynchronous notifications under the hood. + + +### Strategy #2: Publishing Messages in Batches + +To improve upon our previous example, we can publish a batch +of messages and wait for this whole batch to be confirmed. +The following example uses a batch of 100: + +```csharp +int batchSize = 100; +int outstandingMessageCount = 0; +while (thereAreMessagesToPublish()) { + _rabbitTemplate.ConvertAndSend(QueueName, (object)"Hello World!"); + outstandingMessageCount++; + if (outstandingMessageCount == batchSize) { + _rabbitTemplate.WaitForConfirmsOrDie(5000); + outstandingMessageCount = 0; + } +} +if (outstandingMessageCount > 0) { + _rabbitTemplate.WaitForConfirmsOrDie(5000); +} +``` + +Waiting for a batch of messages to be confirmed improves throughput drastically over +waiting for a confirm for individual message (up to 20-30 times with a remote RabbitMQ node). +One drawback is that we do not know exactly what went wrong in case of failure, +so we may have to keep a whole batch in memory to log something meaningful or +to re-publish the messages. And this solution is still synchronous, so it +blocks the publishing of messages. + + +### Strategy #3: Handling Publisher Confirms Asynchronously + +The broker confirms published messages asynchronously, one just needs +to register a callback with the template to be notified of these confirms or returns. + +Here is a simple example of how to do that: + +```csharp + +using Steeltoe.Messaging; +using Steeltoe.Messaging.RabbitMQ.Connection; +using Steeltoe.Messaging.RabbitMQ.Core; +using Steeltoe.Messaging.RabbitMQ.Extensions; +using static Steeltoe.Messaging.RabbitMQ.Core.RabbitTemplate; + +namespace Sender +{ + public class Tut7Sender : BackgroundService, IReturnCallback, IConfirmCallback + { + private readonly ILogger _logger; + private readonly RabbitTemplate _rabbitTemplate; + private int id; + + public Tut7Sender(ILogger logger, IServiceProvider provider) + { + _logger = logger; + _rabbitTemplate = provider.GetRabbitTemplate("confirmReturnsTemplate"); + _rabbitTemplate.ReturnCallback = this; + _rabbitTemplate.ConfirmCallback = this; + } + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + while (!stoppingToken.IsCancellationRequested) + { + CorrelationData data = new CorrelationData(id.ToString()); + id++; + await _rabbitTemplate.ConvertAndSendAsync(Program.QueueName, (object)"Hello World!", data); + _logger.LogInformation("Worker running at: {time}, sent ID: {id}", DateTimeOffset.Now, data.Id); + await Task.Delay(1000, stoppingToken); + } + } + + public void ReturnedMessage(IMessage message, int replyCode, string replyText, string exchange, string routingKey) + { + _logger.LogInformation($"Returned message: ReplyCode={replyCode}, Exchange={exchange}, RoutingKey={routingKey}"); + } + + public void Confirm(CorrelationData correlationData, bool ack, string cause) + { + _logger.LogInformation($"Confirming message: Id={correlationData.Id}, Acked={ack}, Cause={cause}"); + } + } +} +``` + +There are two callbacks: one for confirmed messages and one returned messages. + +```csharp + +..... +public void ReturnedMessage(IMessage message, int replyCode, string replyText, string exchange, string routingKey) +{ + _logger.LogInformation($"Returned message: ReplyCode={replyCode}, Exchange={exchange}, RoutingKey={routingKey}"); +} + +public void Confirm(CorrelationData correlationData, bool ack, string cause) +{ + _logger.LogInformation($"Confirming message: Id={correlationData.Id}, Acked={ack}, Cause={cause}"); +} +.... + +``` + +For the `ReturnedMessage()` callback method to be +invoked the templates property `Mandatory` must be set to true and the underlying connection factory must be configured +with `IsPublisherReturns` set to true. If those values are set, then the template will issue the returns callback to whatever is registered +with the template property `ReturnCallback`. + +For publisher confirms (also known as publisher acknowledgements) to be enabled, the template requires the underlying connection factory +to have `PublisherConfirmType` property set to `ConfirmType.CORRELATED`. Then the template will issue confirm callbacks to whatever is registered +with the template property `ConfirmCallback.` + +Note that the `CorrelationData` provided in the `Confirm(CorrelationData correlationData, ...)` is provided the user (developer) on the `ConvertAndSendAsync(...)` method call. +The template then returns it as part of the arguments to the `Confirm(...)` callback. + +```csharp + +.... +CorrelationData data = new CorrelationData(id.ToString()); +id++; +await _rabbitTemplate.ConvertAndSendAsync(Program.QueueName, (object)"Hello World!", data); +... + +``` + +A simple way to correlate messages with sequence numbering consists in using a +dictionary of `CorrelationData` and messages . The publishing code can then track outbound +messages using the dictionary and upon receiving the `Confirm` callback can behave accordingly +depending on whether the message was acked or nacked. + +### Summary + +Making sure published messages made it to the broker can be essential in some applications. +Publisher confirms are a RabbitMQ feature that helps to meet this requirement. Publisher +confirms are asynchronous in nature but it is also possible to handle them synchronously. +There is no definitive way to implement publisher confirms, this usually comes down +to the constraints in the application and in the overall system. Typical techniques are: + + * publishing messages individually, waiting for the confirmation synchronously: simple, but very + limited throughput. + * publishing messages in batch, waiting for the confirmation synchronously for a batch: simple, reasonable + throughput, but hard to reason about when something goes wrong. + * asynchronous handling: best performance and use of resources, good control in case of error, but + can be involved to implement correctly. + +## Putting It All Together + +The code for the receivers `Program.cs` comes from the first tutorial: + +```csharp + +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Steeltoe.Messaging.RabbitMQ.Config; +using Steeltoe.Messaging.RabbitMQ.Extensions; +using Steeltoe.Messaging.RabbitMQ.Host; +namespace Receiver +{ + internal class Program + { + internal const string QueueName = "hello"; + + static void Main(string[] args) + { + RabbitMQHost.CreateDefaultBuilder(args) + .ConfigureServices((hostContext, services) => + { + // Add queue to service container to be declared + services.AddRabbitQueue(new Queue(QueueName)); + + // Add the rabbit listener + services.AddSingleton(); + services.AddRabbitListeners(); + }) + .Build() + .Run(); + } + } +} +``` + +The code for the `Tut7Receiver` also looks the same as in tutorial one: + +```csharp +using Microsoft.Extensions.Logging; +using Steeltoe.Messaging.RabbitMQ.Attributes; + +namespace Receiver +{ + internal class Tut7Receiver + { + private readonly ILogger _logger; + + public Tut7Receiver(ILogger logger) + { + _logger = logger; + } + + [RabbitListener(Queue = Program.QueueName)] + public void Receive(string input) + { + _logger.LogInformation($"Received: {input}"); + } + } +} +``` + +The code for the Sender is also based on tutorial one, but has the modifications for confirms. + +The senders `Program.cs` is as follows: + +```csharp +using Steeltoe.Messaging.RabbitMQ.Config; +using Steeltoe.Messaging.RabbitMQ.Connection; +using Steeltoe.Messaging.RabbitMQ.Extensions; +using Steeltoe.Messaging.RabbitMQ.Host; +namespace Sender +{ + public class Program + { + internal const string QueueName = "hello"; + public static void Main(string[] args) + { + RabbitMQHost.CreateDefaultBuilder(args) + .ConfigureServices(services => + { + // Add queue to service container to be declared + services.AddRabbitQueue(new Queue(QueueName)); + + services.AddRabbitConnectionFactory("publisherConfirmReturnsFactory", (p, ccf) => + { + ccf.IsPublisherReturns = true; + ccf.PublisherConfirmType = CachingConnectionFactory.ConfirmType.CORRELATED; + }); + + services.AddRabbitTemplate("confirmReturnsTemplate", (p, template) => + { + var ccf = p.GetRabbitConnectionFactory("publisherConfirmReturnsFactory"); + template.ConnectionFactory = ccf; + template.Mandatory = true; + }); + + services.AddHostedService(); + }) + .Build() + .Run(); + } + } +} +``` + +The senders background service looks as follows: + +```csharp +using Steeltoe.Messaging; +using Steeltoe.Messaging.RabbitMQ.Connection; +using Steeltoe.Messaging.RabbitMQ.Core; +using Steeltoe.Messaging.RabbitMQ.Extensions; +using static Steeltoe.Messaging.RabbitMQ.Core.RabbitTemplate; + +namespace Sender +{ + public class Tut7Sender : BackgroundService, IReturnCallback, IConfirmCallback + { + private readonly ILogger _logger; + private readonly RabbitTemplate _rabbitTemplate; + private int id; + + public Tut7Sender(ILogger logger, IServiceProvider provider) + { + _logger = logger; + _rabbitTemplate = provider.GetRabbitTemplate("confirmReturnsTemplate"); + _rabbitTemplate.ReturnCallback = this; + _rabbitTemplate.ConfirmCallback = this; + } + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + while (!stoppingToken.IsCancellationRequested) + { + CorrelationData data = new CorrelationData(id.ToString()); + id++; + await _rabbitTemplate.ConvertAndSendAsync(Program.QueueName, (object)"Hello World!", data); + _logger.LogInformation("Worker running at: {time}, sent ID: {id}", DateTimeOffset.Now, data.Id); + await Task.Delay(1000, stoppingToken); + } + } + + public void ReturnedMessage(IMessage message, int replyCode, string replyText, string exchange, string routingKey) + { + _logger.LogInformation($"Returned message: ReplyCode={replyCode}, Exchange={exchange}, RoutingKey={routingKey}"); + } + + public void Confirm(CorrelationData correlationData, bool ack, string cause) + { + _logger.LogInformation($"Confirming message: Id={correlationData.Id}, Acked={ack}, Cause={cause}"); + } + } +} +``` + +Compile as usual, see [tutorial one](../Tutorial1/Readme.md) + +```bash +cd tutorials\tutorial7 +dotnet build +``` + +To run the receiver, execute the following commands: + +```bash +# receiver + +cd receiver +dotnet run +``` + +To watch the confirms come back, run the sender + +```bash +# sender + +cd sender +dotnet run +``` diff --git a/Messaging/src/Tutorials/Tutorial7/Receiver/Program.cs b/Messaging/src/Tutorials/Tutorial7/Receiver/Program.cs new file mode 100644 index 00000000..d135cff1 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial7/Receiver/Program.cs @@ -0,0 +1,28 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Steeltoe.Messaging.RabbitMQ.Config; +using Steeltoe.Messaging.RabbitMQ.Extensions; +using Steeltoe.Messaging.RabbitMQ.Host; +namespace Receiver +{ + internal class Program + { + internal const string QueueName = "hello"; + + static void Main(string[] args) + { + RabbitMQHost.CreateDefaultBuilder(args) + .ConfigureServices((hostContext, services) => + { + // Add queue to service container to be declared + services.AddRabbitQueue(new Queue(QueueName)); + + // Add the rabbit listener + services.AddSingleton(); + services.AddRabbitListeners(); + }) + .Build() + .Run(); + } + } +} \ No newline at end of file diff --git a/Messaging/src/Tutorials/Tutorial7/Receiver/Receiver.csproj b/Messaging/src/Tutorials/Tutorial7/Receiver/Receiver.csproj new file mode 100644 index 00000000..cf1eeebf --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial7/Receiver/Receiver.csproj @@ -0,0 +1,13 @@ + + + + Exe + net6.0 + enable + enable + + + + + + diff --git a/Messaging/src/Tutorials/Tutorial7/Receiver/Tut7Receiver.cs b/Messaging/src/Tutorials/Tutorial7/Receiver/Tut7Receiver.cs new file mode 100644 index 00000000..2bc76f73 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial7/Receiver/Tut7Receiver.cs @@ -0,0 +1,26 @@ +using Microsoft.Extensions.Logging; +using Steeltoe.Messaging.RabbitMQ.Attributes; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Receiver +{ + internal class Tut7Receiver + { + private readonly ILogger _logger; + + public Tut7Receiver(ILogger logger) + { + _logger = logger; + } + + [RabbitListener(Queue = Program.QueueName)] + public void Receive(string input) + { + _logger.LogInformation($"Received: {input}"); + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial7/Sender/Program.cs b/Messaging/src/Tutorials/Tutorial7/Sender/Program.cs new file mode 100644 index 00000000..905c0575 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial7/Sender/Program.cs @@ -0,0 +1,37 @@ +using Steeltoe.Messaging.RabbitMQ.Config; +using Steeltoe.Messaging.RabbitMQ.Connection; +using Steeltoe.Messaging.RabbitMQ.Extensions; +using Steeltoe.Messaging.RabbitMQ.Host; +namespace Sender +{ + public class Program + { + internal const string QueueName = "hello"; + public static void Main(string[] args) + { + RabbitMQHost.CreateDefaultBuilder(args) + .ConfigureServices(services => + { + // Add queue to service container to be declared + services.AddRabbitQueue(new Queue(QueueName)); + + services.AddRabbitConnectionFactory("publisherConfirmReturnsFactory", (p, ccf) => + { + ccf.IsPublisherReturns = true; + ccf.PublisherConfirmType = CachingConnectionFactory.ConfirmType.CORRELATED; + }); + + services.AddRabbitTemplate("confirmReturnsTemplate", (p, template) => + { + var ccf = p.GetRabbitConnectionFactory("publisherConfirmReturnsFactory"); + template.ConnectionFactory = ccf; + template.Mandatory = true; + }); + + services.AddHostedService(); + }) + .Build() + .Run(); + } + } +} \ No newline at end of file diff --git a/Messaging/src/Tutorials/Tutorial7/Sender/Properties/launchSettings.json b/Messaging/src/Tutorials/Tutorial7/Sender/Properties/launchSettings.json new file mode 100644 index 00000000..8ceaf50a --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial7/Sender/Properties/launchSettings.json @@ -0,0 +1,11 @@ +{ + "profiles": { + "Sender": { + "commandName": "Project", + "dotnetRunMessages": true, + "environmentVariables": { + "DOTNET_ENVIRONMENT": "Development" + } + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial7/Sender/Sender.csproj b/Messaging/src/Tutorials/Tutorial7/Sender/Sender.csproj new file mode 100644 index 00000000..c9e611cb --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial7/Sender/Sender.csproj @@ -0,0 +1,14 @@ + + + + net6.0 + enable + enable + dotnet-Sender-C5FF4FBB-4AD5-435A-9D92-2A519E3770A0 + + + + + + + diff --git a/Messaging/src/Tutorials/Tutorial7/Sender/Tut7Sender.cs b/Messaging/src/Tutorials/Tutorial7/Sender/Tut7Sender.cs new file mode 100644 index 00000000..6761e49c --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial7/Sender/Tut7Sender.cs @@ -0,0 +1,45 @@ +using Steeltoe.Messaging; +using Steeltoe.Messaging.RabbitMQ.Connection; +using Steeltoe.Messaging.RabbitMQ.Core; +using Steeltoe.Messaging.RabbitMQ.Extensions; +using static Steeltoe.Messaging.RabbitMQ.Core.RabbitTemplate; + +namespace Sender +{ + public class Tut7Sender : BackgroundService, IReturnCallback, IConfirmCallback + { + private readonly ILogger _logger; + private readonly RabbitTemplate _rabbitTemplate; + private int id; + + public Tut7Sender(ILogger logger, IServiceProvider provider) + { + _logger = logger; + _rabbitTemplate = provider.GetRabbitTemplate("confirmReturnsTemplate"); + _rabbitTemplate.ReturnCallback = this; + _rabbitTemplate.ConfirmCallback = this; + } + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + while (!stoppingToken.IsCancellationRequested) + { + CorrelationData data = new CorrelationData(id.ToString()); + id++; + await _rabbitTemplate.ConvertAndSendAsync(Program.QueueName, (object)"Hello World!", data); + _logger.LogInformation("Worker running at: {time}, sent ID: {id}", DateTimeOffset.Now, data.Id); + await Task.Delay(1000, stoppingToken); + } + } + + public void ReturnedMessage(IMessage message, int replyCode, string replyText, string exchange, string routingKey) + { + _logger.LogInformation($"Returned message: ReplyCode={replyCode}, Exchange={exchange}, RoutingKey={routingKey}"); + } + + public void Confirm(CorrelationData correlationData, bool ack, string cause) + { + _logger.LogInformation($"Confirming message: Id={correlationData.Id}, Acked={ack}, Cause={cause}"); + } + } +} \ No newline at end of file diff --git a/Messaging/src/Tutorials/Tutorial7/Sender/appsettings.Development.json b/Messaging/src/Tutorials/Tutorial7/Sender/appsettings.Development.json new file mode 100644 index 00000000..b2dcdb67 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial7/Sender/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.Hosting.Lifetime": "Information" + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial7/Sender/appsettings.json b/Messaging/src/Tutorials/Tutorial7/Sender/appsettings.json new file mode 100644 index 00000000..b2dcdb67 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial7/Sender/appsettings.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.Hosting.Lifetime": "Information" + } + } +} diff --git a/Messaging/src/Tutorials/Tutorial7/Tutorial7.sln b/Messaging/src/Tutorials/Tutorial7/Tutorial7.sln new file mode 100644 index 00000000..2dc71227 --- /dev/null +++ b/Messaging/src/Tutorials/Tutorial7/Tutorial7.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.2.32901.213 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Receiver", "Receiver\Receiver.csproj", "{3C800E2C-A68F-4BFB-8EAB-80F285316A64}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sender", "Sender\Sender.csproj", "{328AAA6D-BC38-4496-AE5E-BC6DEA6668A1}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3C800E2C-A68F-4BFB-8EAB-80F285316A64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3C800E2C-A68F-4BFB-8EAB-80F285316A64}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3C800E2C-A68F-4BFB-8EAB-80F285316A64}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3C800E2C-A68F-4BFB-8EAB-80F285316A64}.Release|Any CPU.Build.0 = Release|Any CPU + {328AAA6D-BC38-4496-AE5E-BC6DEA6668A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {328AAA6D-BC38-4496-AE5E-BC6DEA6668A1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {328AAA6D-BC38-4496-AE5E-BC6DEA6668A1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {328AAA6D-BC38-4496-AE5E-BC6DEA6668A1}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {D637D0C7-B82B-4282-9D3A-F5A2A3059044} + EndGlobalSection +EndGlobal diff --git a/Messaging/src/Tutorials/img/tutorials/VS2022NewConsoleApp.png b/Messaging/src/Tutorials/img/tutorials/VS2022NewConsoleApp.png new file mode 100644 index 0000000000000000000000000000000000000000..2261392fe319936da3da50867366f0062fa17846 GIT binary patch literal 45628 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 E1t^+C8vpc!?Mg+tVT8I#mAdFxGMrlfm zh=S5W4LuQ2q98>P0t5)f(9(dAg!JzQXXbt8eb=+r|9$KK*ZM!#!j;^~z0Wy&pR@OM z?Y-~ZJ$Ke_!+P!YN=ix_PX6|<3rb4L0wtx@PuHylu9((NE`P8p^n%?{rP5B_8Q{$t z-y`-%l$6So)TEbHfcM`8{pK2~q_nYR`EL~k@$#yYQtrP_{_Du4n_g^LK-CRo#1tl! z{9a4gfE{_kZQ*@Qe5q@3<9Pp#jrwybS}YbRZ)9z`4cz{qcEZt6yK;EK=byCn6E+J%b#^`XqywekoL<=@uH8uVth}R_Uh&9(cu@;$l}?ec2hA^DE>uS{QdG( zB|ifnkw(<0GDAyt8Y~yvtXv#^W=z1{Mm>-lc=fGZP^!w@Z_}*5{5m@Er~YpPU0#D; z`OxZtx5n}dzf`h9LPq?|q^))K2tFS1>AqJ=--nq3{D?vm={o%LI$-|*_dEIjFi6v7 zZJiaeY3Xt3+hWBMNC6XRD#oGez4rJ1l2xjT{_sX-e6(p3Yt{07B^Bz;UQxAp$CsKh zE3-7-etTqB1qt4LH4vUd_8r4I<$C=!gloPx0ySHNox*DWeJRbG3&CJ&8=GYo3WJYH+?ZIy1vbDQoKBXm44{N8HZZiifXoKE0x z%w0#m-SD*Kn|!4(tv}VXap!+f&*Av*zpZ3?-?!nF^iKTWF2wk*b4n4J*R$|(@YBLq z4MnL(7IE2HXq zo3Gj($d#QCeVC;3KZVdWlg$AMuYYipdy{!F3w1QmZV0ATMf5#~ykooS;f570mOV?e z>gP6&6556#m}@^)5%e(i)}r?hL#DfP_tf84w3mdpZ)2fIi%IQfHN&3z;(?@gi@lvR zrQw=_C^@GzY6}h(!Az}5iPf;afQ^`rd%nE6{Q~`CWu2&DH|*ROr>79{S4dg|LNu}P zIXeP9AnP+~Cp9R_qkKPb7Cocp$`g2VE{A?AQ*|4S3sJNR^Q$G_3G%W~BN0l`Y41r6 z$}Wuzbpc`NN?q4&aRD|AE$ZhyAHMfvzcTz-87SWCH~Anzrmf`NyiRZ!z2|Zn?zm_i z;{d-cmLLo@zYM*As;ogjg|8D#0CyY)Z(`jNxRJaS2B=g#O>MG(V`9NNIasU}W7BQE zMiLAhlBaqrf?Uh!uC@wUfyGglTf~x}#sI!6s700uvkjjc#}0I=**b5Ow{*4j*g4A2 zh!{fom0COti>s3ZF5r8Gi6BSh6Cuq##u(*u5px9oq8(B2iz1(Z`e>m4tA=hPsSzSF zi!Ip)?dm&l!?$j9v!rcU!^SHoN<4i+lE;`a0R3vm8FaP{Zti^EwPq2qjsS5Xp}sy` zc$@5yo@Z_$d)Pt&8KSt7w*pA;Lu;IX{)2unC2BG~DLsDUu$L|MCVT>)=R6d7HFPgT zF1~$?@4nXs;?_?iCK2;hqnP?={+Q#bw`+e|kTR*h3w`zO-Ik>f?tm z&KRJntYIIz!QS2A7A-IH5sr|4VWUljsS`H>{!l-T9^!M$&NrA{C>-Gg4xO>a{rehudw;!U8 zmeG5dyp&!&Ooen}xF$6dLCW`tV5GNoh^e9Eez7pp0YrMm3dUH#OQ)VJ+>hUw-VoSO zXVDr*&@0k%rw6m9MX`Lv5F{+#t7uF!nWMHB#&>Am4wwC^9ndh>=|)nWJ;%pJQWr z^4pw6gqNyCI*o&UDLtBtJJ8SFgYT;z77j0z@i9vc?oclv#5L`z~$zxt9?)UcI!LY64Y32B+kN=(B?@nAEQ zhbSB?)166E-?MpX9Mz_w;pIN!#s{f|Lmf#C+tqO%B<$tS`QHhpdNzY#sDtcflnwgW z6(OY!M^}%tYu6w>vNpJAY3JT$*BeT#L_Oe7@uwh)2&=fdIVNO8i#Zk|p~W-p=8s4L z#K6I4(jY{vr=4i)f>Pj6+(JUbV6 zPA0E!o_jT-HZR?q)A%fkp{jFPGVRdTTn`>3OgGimK=mGv!oFaf>Fzlrk7*91hYC)} zgf~|{=PlEgJ$6Vz;0zH5Hn=zQ{pz^)BQhTj@oI>IOD1QWAqHTGLe{~n3t!3~Yxvw_ zX&3ll@vO9S1o=q=-!#S45yF2TU?n6tr?@8-Cmop4F}A&9RE(2cG@}M|3s!j8%uZ>K&%@1 zI``NHGN(2P$NSvaaj-TN%5Q!5n_Prm5_~;NsO05`^bhX39AP!}Ugi}Q@}R>)GiNDW z^yS)nsF7V@0@=LW(OGm}_WjzJB@NQ&(T-m%gazC^&hg?~7VC4C0_zGn8R3XiHuJ+p zC!$JJ%38-{GQuF4%S-Mfb#6$Q(}N9`0% z2OVU1S4esp_Mp1_pvbo6Z?IG#DA{y>zy* zw*6DV@x>6;BgLQU5shoZy3*75=vB#&*$Qvl(@Srh;=Mu!8zoLzmXSv~-*O4{Qfdbgm}+^w29|25ZLVaVdd zV@)>&895f$xt5`hz&tkNnc0k(u3<0zn_py^4ca~H1bLK~YJ!W_cA2?SzdFTQ#reR7 zoh1HwUI)}}9qPRWp8B;j;-WlqSc*dJ{Nm|=ZEUgV#r+Gz+z=BikG+k?F5ZnRtpB-R zQkOs>@R}Gpkb&Lw)(C_Cq<8>$vk#Z44hGc4$k62T*efP!@m`CF7OmzWtFa^DX{X8a z@4cVWm*|{$4Lw6Tc&Yjs`K#<9L=qk`Gz;F!5~k>I&>{P}A-wj5w>$0Ha!15s#j4TM z&S^pnTQ!pp9JOJ}w5sg|`71=a!IzQv){dk_37F=tn8Gen+KNO>Di` z`uz&?2`j~5$jyw_7%p0pk>(KNtx-h{Q9%Rjq-oRQaM3PNp3~jCF|s*wT9GiF z5i2i!AyE#n!%Ht8y2*C$A(J?`B=q%W>@*#bFgMfm;U-_o{gsJJrY}%TI$CC2avR?m z$H<6X4<*L}Irc9hbpbNMs74&Wgc%ts&s0p=j?9C)ERPHwl*fcYp3FwkPJX|P1}nVDTOWL#e&`;cxE=w6t!XJCeVWlAhbK!MHZIaP-GNg^W0wYd;@j=3sZ1bz%N*cUUB}p#fWHAlpd^ICNIsp^PPLQY z7TGZRb|P^Pv4G2Mqh3o=qo}bMV{<8)J%vl6gxQLdv%-$5m~ur|1WGZ@Ao)DWg(Aw%A_NC>Tx+8B4b zi?auZJi_N5=0?qc(%m=Ooa1QKCUX?=f*!`4J=$Y9E?YB&Trc$HYR< z3G!Qe=q7mlbjPjU@?mfC_9#y!BE1N-Bokx*05!t05yv^i|MfGVh8OYtg1A%hHNoi>WWbY1HDG&u|a)*jhYXW93P z5*(TuP(-;WN@!7?2kF^1+Hww%cWc0{L7*8Z0+qTG(#t1~1hSXm8>{2-KCfhNh;)|+ z*Nwj9RyVm5^ec5yzos;vZ{B6SkPzap{kt6i6Qke)c4L*U^h00P+SVCQW$LuH$(+wMRX?>CP!p9)mj>zOu?k;tj6$J8rs*3Y!A&&qZRM^}w3OHSsK9jvu zf!B?k#hNuks5Uf_P4EG&x2W_aJ$1zu({7w!tqj(SkJ=9DKh1R`7s+dxk-3U)dxmE! zswQ)dBnOUz2X+rHfy}iEW;OPBNfT~a+#!DXh&c`i_am?$F_w=tC9-5q5hGuW8E%mJ3fA#=Cv+BTEJP}b;G zjC8BX+*n4Mk&!&XlinH9JQZjXuOHbc{e1NKq~yIaL(t_}CO`l6L^H{EN`(;jYb+B>Kqr{ zp6r0QEgeA)k=F_wqZ|gxB(j>tPJY+gQiYxVQX3I+xBLbX#IoST#FMQFhiwnM%qGZNia#h%W#J_r4o;pdac&T9nzf0j3{% zf%|ipNo<3U3_Ky)Q30zgr~0&Lt=YU!xUEpy2Rmjj-L{ji!P*cLk!K4`M`?07jSirB z%D=>8gSOk~7x_3AtU+!!Kdg97o-bm+?K%Axvw(V(yi5P)SHO#CCm?&hoNP2r>;QAO zR@gq)1=8Bx*CTg)r{ovUk{pbF_kV4AyK00W8zihMdFYwflcKlTC55G(9mjHc{p>2$ zkGfoBC`p%XTD$F+h7$$9f_Ihe9x$`oFi;+S{6p!dQXuK4BLCJmKuc@H5`$ zD+0o_D`2bcKl04;TvlY2m*AMziqL%4<7J`K2d`3AFN&-#3KY03jr|T1CMRL5l1QmOr~nDcqmQj8dP1x^L_Xi8A&8blcIkMj}CI8IzYr zVg3X@ zW}EDu{YvxR{>{RtI#^ct^!mE$h>@aYTVL~ul~v*~KsveK z&9y-hcW&h98gxw4j(*s2z(xlEidU;k5=c8JCH1>Zlp=23z6NY0z~Rz%Mud$uhb+DMm$_YABhYqCIKm%ZUW%p(=ffjQE%b#Ho|iTB4scSa`^ zIv>6d6Lt4#M3JvTg7xyN{Z#+fXpC^+RXROVJ{;cWNAnp_QJNcvBCA07q**G;pIRR7$)@boV*d z<=jRf8vtI#No`Vkl*98p{3PeD;d~YKJnV#OKD@85F+-68f1c24f}<%TkR6j zYrXsgkWzmJwNJP5LwTejMW@)^od(@IEBth*Y(FRG?076l>MfE0g~U~cJovI|q~(S7 zGm+%?P+0h$qPhOiCE-q>{sM`j;c+jnT&wpQ zE*s$)-&FBEl{L9EBZS_i7Kq_&4Y}2k;)X&xYBZydP_sz&s7cHTvyCcwY#s&0$8X&z zuthB=%hRhaK4#c z*G7?Sb9|D7YXZ?W1gW!Ra>W<4EiNae04}RX?j1KXi+aE=G4;=z7~$eKKh2hE&`&9w zh==Ys%SpKN+q|B_uU{x-k5E&aESZY4kJ-QbzqP{Fvvw?lX0B6$S8_So-5I>LY>5?R0}`iJ7}xGYTR{1cbA{2V=_3?_19 zF{4B#2lwMVdxt8l*bNrZUEQZVR&jt&IzLg6vz!pL5O1W#05K+if4?lTx8NEfY@s z^hNvMA2!=Qkr4Z8v7J5PhuZ;%p*nNCYfdO`ZkQ1~^IKB++^40(P&Vn7dOqv7SbXwx zzw`0}Z`rnpO|WPt6nEsFe>)Ia+7b`_Mt!q|Ae76+!>!hDABd`-%D!r6pDLqk-4BSu zev4fjKJ#n~m>x)b!ayOHoJvnGnoOe(WNwc|T>ny>w@}Mma`WG{?9x=Y{fMYFxKR|- zBIeVi#e>T-rTXt5&AyqAjBck)t2JZyJuT5$k1>PCe<5yYF8%3s()ylQ-u>K=39W%a zi^VA?e*V!iV7WoIO+?4bU=zYR!AYDel+ssMdZQuOYwhH8?2O6NuIS0b*NcMi2K04&bf01I@((}E(bJMUQO zp{B`7zr!|m>;ZGOk(^EdDlBzv_NIrQuz#^d}`RWn{a{t_FBf$oV>@{fwF`YDASI>u-o6oxJ zY-N(mXwwF61(4Rs`?hD?zhMwW22~;kZFDDJGgt07jGtv*qVx^~s6}2D~AQ52e`0dU^+$Z)o-WIdZl)c*}zMpn3hy zhEL&^KfC=FeyeH!YijXjzmb;QkZH?T3D^(TP1j)XmzECpl=m%2UUw4~ezj|6PNb__ z`O{-s=uCS}U8~<`?CVBgRt0coXRDhVq*Sh#o}2XWY~bL;<&bYXsh|VOJ>REaWVE8d zzD4_AH!(Rvb&?_xvK6k4VA0(y=y<*8%;0Y_Y$#*Bx}{tR1Pg{IDoHqP{x_pB!tgz*wn!u8~elR z;D{%k?uPD&&~`%RWOVofyJ}8*&`&c_kK(~)N(Qo$c?V{+Cqx8YH9tHnK1foVWGsXW zIh|FMma1h;;zP-@jai-X4PlyLXpNl~ka622!d6KRUhh7E`fb{5AZ3Q&zOh@dfc~pQ zXJhKNK92@1sd>!&VI9!Z>#GB_f3_Gbpezj42JbmWDO3}TC)MpBxt`bCm>im-->%}a zxwXRL)Fq23>C*-4gdB&+5u^5aYSRE`JZMBaVf$1;oo5!Fc9Qzo8sE~T(|z_oqT39H zhM=fbMN);GjZ@|n7DmF9UJC%z{0B4(bbV+HJt+?6HVN}(V1G_CR+cDv51ugs5{w_u z{%1h?DpnQ%l?xHCaWAS*ra;XmSIV`LfhByXKSnOtQ5(qawT zJN*AkBo6eT{QtE(s4540c9l|eZ*tS#*ZZ=KmPtvkRO2Sl8)sEPRnf{1J-$qWGGswy zPCZlHe=QSE9JrRrX3*1E$W?JO9?Qvul53EmRZ6d~fAG@ue%!frg<1+)hRLx&|5(~) z6pK>ux0L1ft1>Cj{nAsn+;8UAfvr^rMt}5gqqE{A6+`6;JdSJh_;C2%RZ8vg;D7(V z$xr>{Q5BQj6g`xO72%BeiLj3i+}CR=LcddTv0WpX|F1bsu~ROdJvnvYlzCeEZKnrm z*{79WhqPlmul&~}F*zs}vcQXCi=3Kgya~Y8NE^7AsN{}zBIe1}i3nG}cYXtPYm|&Z zoc<(-sb%`@XC@i5?efM+=PAM@c&_}Is+_w}@1QsvA*44}LIZcu@AFDRm^MjiH6A#> zAFE1BN>Y3FD*7f#v%Q@){y!yF>Se^X9&pVJ_76<%GzF(CMKgfLA^hKZ!{o5~w+$kv zM!G)CO7lLn@~-&Rl%e0<+L`GyD3I9OYiI1tOr|FxPJDD<(N2dV>bMzTIa%C9B0BJp zY)FssfOqy+16`cQA<@^Vv}|8>@*m3G`UW{SuMAWNI3JR*D&w)6&fIV9Gd*iH^E_@ns@akZVPD^sQdJ+7p$MhCc^(%*5krh zqHHM)$TH}7EjIY3p+=Sx7vcc@HA;nE9wRr|Dj0D1CeAJM!EzX7(n1#T$rM1({b9C` z^}vez>jdI;q@$99+taCxz4AwfOC!Fu4Uvw3`y0r`D zZ;#E9C#>$J=^kg8r|~}|K3ti?j&C+0k4ZJig^g01DSi!9I$7DSf)ms)4>WWw&+V=I`smjFrcIyb zZ$SCir)USirwnZDXeOU)8+>p&G;>n-Rz6Ed-sltBd}E*vq0Oo^-4FE1`Ie+Ne*MKC zvYF-{VQ$d%rbs17ZN~6ov|}9+^S-*<$Udg&HvB{DzH;2wj*GCw18Gf1E?;RVEH7-U z{I4@y@~<+grx?{Zp~tY{MmP*Kpb(ILMY>`Ey4LFtjHn&D7qs+RwGAX61EmEJnut=W zLJXDo6l90HS>kLU%IXonay$H;Ef`#{ese zDO_D!dJ+`JwyMS$@y6&>Us*L_lYUDTUC1Dj%Nuw^1mdV)!;H(I6XezPDM|wTO2nT> zRSF!{qSSQ)1AJ77h)tKX7r(!Se`fG59w&E zMj*%ij_@*+pS&ilsrJcvh6^JF|mZ8em`rPr%T_|>Coi~v+Wa3^%x%qEyeR)eL@J?ko850VXGsx0( zS%tqUTE$zfeA`XO{KG{dYG0ozeXmSVfx#tnaHOe=#MZC|sA68tMGuu<;!sDaOi6&0 zwd6=q+T}x^E85*n(-S?IWy3_O8v440ghw4Jm8muw$O_Z_+um1l6+nw-m))O+8#?jL za9|Y2n2QxQNXW;4z5|8iKphOxOjZ5+kdhFNzY%3xX>j$f#8+@S1SUg%3~v2Qg3~fJ zol3*a(^50*fdwzn7Y`tty%_TuDaG&FIU_Zv;zxma{yrWC_A#02s?n)Z>7w_mF>ZaJnvbo=;ePQ@v#{Dc4D2E0u_g z$%3tKV2=e7(vZ+195o_f+pmLL=$)p`8aT40wdM9s8_%?n#;E6SCZX696fQ-iMOxme zK3&H)_t9fe>Z3&bZGQ0E;L19nlYD-l%jru`o!b*gj&C9mG~{{m+n?TPLOo6^esaK_ zhX8)E*(}aWB?MRFxg}<6Sb|0uQeu0FV#?AgC#P4Z1L~fih`a)ZI7KP9yfuvu79qsQ zEnj8T>DAlqR@^Nblf>^jo_gbfI)GK81;9R+b-^zILw@ik0JSTmQvF0$Xy<@5AL8&$ zRo@AeGQ`V>#BVnk_xdNGyPzPnI;2_ub%-VJ;{gluOjoh2g<7g-m}C-SWYzkrASa`9Ri$s2GU%OZ_oZ##58FFI zWxxFc0A;qdzOUNR&m`}EAi-~Ux+UNGLf-GwODusD~lE8_leU% z=CA4_y3qFai54HS2IWJ>kyzL0;k_k5E$5?tGd5~PU5ASXG=%;i5`lz(>4ES9uW`z& ztv_xN@cn3{k(Y$(?~SNL%q1GJsP#U)q*HL5y!YuLG5GCZB5zxDS8JtJ!V5b#MI@Q8 zMl_dQ&wh5ur4Ca178?3~_FBZolFq)%0h(YETT)TaZ?z3C?l;Ie4JM{W%@oAFb;c5lI$uB%tIM%o;U3&RwEiAMoxJGauw(v57!;Pj#i}WDo3ZsA|>8Z&2YcrS_0u5TgOpohn;F_o~?~_q~GLUCLkk zA#>VF@G1^QHS;Cp-gom+?rM(a`E(};=xJ5SewsyID{seHiTR1)av5=ure&1~>RJ-y z%@(#giK@DCovE!{$)N~WP<1b{ZDMIa>jG*crVd2-kR=Uwaz zuBY=Y3~MI7^g1T!(Gmuekd6UPPXzXT&?Hhqe^z605`mBro6bKlu$0sB>O;mj)-n4n z(~xN9NHN>?daL&y=^#np(PTCtms-WHYkMnJIr;%{112dL`HE{Rj)S~PJ zA4dMHmb`Hl{O~^j_LH}o)K;o*GevM*LQ1kIB-4|S>zy2Lb&vdU2XW@6J*6j4P?CN1 z^1%QDN5**4MQ4jnEu^G;uY08*t>%N667G0{|KxaC5)jsVS7zs@Zqzk+Pv96Rk=LF$ z(ziNFeUXS)8Qs-9vbyFf>~TNjLYcFU9wICFOV@pNVQZnGaB72J=06EkIwP^^jgz{` zvx>qWw+S&3+sf?tLJ3wq)gKbz%g^xL_WYyegg?E{gX%;Zurf>9#UvCJX@dittGSeO zPXsWqqS0N4PA9@4naSyV|B$_T`BUd4<-@fB*WG-X-Sb!6Ux7={dpk}$ZmO9pvb(*Y z6}RU-WwZzmdI^Wc-}FB0l|Hbu=^?8HTJeP=`LlK5T-d#+T=TK4E9_R<;DX^jMtG4RjQxcsv{Fu8SsDY&e)LMbCRH}R-?5Cj63Xp zm7uoo%-?K}WQ=0bu4SDo46g@g^gi+b-J>aZ->fD4Xc>M()7^tJ$UjtEzE<#5jeq!W zRJZFy&$+_r-skM_qov|kIBHA?b&_^1Jo`zp{btwb<9q)OC4X^j;9;erU(lY>m;ZKp zD9#FD{wo3i!88DtHt{D*`{u!yYshJ!e|M@VfatsZ zlju(+0?%Q!C;h`=Zw6St3-%weCA~wny1FUB^99gU;#LswYwlI{g-}b;s7s4*jN>q7FKZD z+PBs0_$9#(OikwEq8u7RnJ>HF=Jl|IGv;5GGl{jenasn~&X9@)5ggy27tp^JX_ z-}DlY;QHDt-Idb!w2$21DCk{Vn?qqv1&Xd-LU&%H%(9izqq66Tg&XWWCeQOgvO#X84x*xMv-YmfF!3AkNCo{PPfFy7W*(=l4p7 zsp*tSJ9mh1n{4VL!PS__7hheR*W#LVFh$`;1&Os68_L+bJJCIe; z8MM7seg~B(vtDd``El^AoP-hRUWdZR1(x~M*Yu#FRhSO+%cqSlW8>{l^9`hP^ZbaDA zGZG+YbP3N{D)LAgtTC5sZcxtc==Gk|@5TG?PPVq|!Q2%nC_d^-LLBF=*tasl`! z9+AZ3TmtJDX>!V9W%>T~J>s~q55J_Vr-)<`-MXzC1lI``JFY&mP>DWXhFHpbyXh;` z^18c8#+Uq)yC2+}5wrB3(r?36?U3H|KE7Nm6gT%T4>gB$@ z9Ct9C)LBKnO4qC^iJ*l$qG^3@0PUhWbd_Mb%AXD{qW?G(+F@HfXy%(_D5U02`opU| z`O?CnQiq~SYD`?-0B8h(5db^$qCuOhKR)ENftd|2eXYh{ZuW3exog2;J3bu z9ic-(rKop}#T&ZK<(b&6=*ua+cX3AszP?NTM(u^%QPdOY#jT!6jysMr>Pz#A;a`At z4&F)JP7aK6Ek?K%5bW6QuebX+1r!bvxkkGJb^`d5jgH)iaX(KhoU+cC%s}R_(N9$Z zY_4aIq>bSDye8kvAG90wp;r!Ekp! zY99aY7=&hSp8u&Ia8dbGi~0|WM(VfIx3`};F4uMlSBa$`3N`uL-Wo^w!1voHHf4)M6)yCuPLgeAX@FBe z8_~=F#3>x~<)4rk3Vlw%EL?>Lsl}q{+WLG}f8?c`#ArC2*#}Or0-7JEEIB$IjYHvM?#}XEHFBTPXF&ROpJ6|x;s(~MXG(qeD{h1dl$!vjtjQva zdkJX}3CmYPcE-&g2ko{P4g)ec=&^%wk=qUWDTj4uGM&^XBde?=vT(IFVzz8V^0K@F zUfmT_GbaRHyzA3X zd7hOM9u1!XdruW`MW$g(6)s$1^<|QQ45vHVo88EXWxYO*lW9tg8^c+izp;nMY(FN}OsX z*!1;2>C?uPZ3D5Y;h+-XK|4?zJ5N9=K_n+6r~2@Ct#zbN@W@ir<>Ul*i=q%B>sh#) zglilMmat{f1Po}pql(k-%U{ph*6BESwS9RZit5W1#Pff$blgJMac7ZP!ZS_LgjXIiL$_f@Ds41oU8lv|p(jeV zxfK(7MTei;>C^y6I;8^=cpqQGMIfEF;g7lFUlIrb6<$v!GmeMeqnnteTY@@F!3M!} zLJ`OMT}Z>;D|6KtI_lw6+vJZn%IXet`!$~)Vt*|AL{>+bjr zkouPfmUnw_&Veu>FGHBp&YSU=2Mf&d`Cx&4OKtBvjOUQyMM*x)hrR!L@;o2A7n_Yl zzAj$LyqqZV+A{O*$?W1!?PNdQU%ol;iZzlc>#0NjBI_ldtIz)o&D$DjKW5^oS39Qn z#(c}Qo3(x?SYNgNd)t1)Me(K^G}ACjw65^DW~~b*xx5OF*{|JVdy4yRE)WJZO%*C% z>i}{tA2>$`hW9tndKOEQ{!DW21<$|T+z#Na25~+_n;330!-5-E<-Fbf5_1I&9puT*CpfX=j*?$2$-|wAbdJcM9%EcDo&F)?p^E zw7}(>RfwMC1NcXT7k&d>Zcn^%BN0=n)W%6OSj3nb^l@VKsV%=tbyV${(XQ@ahEst+ zum>z`|ABQJ)wMVtrcW(T3>ME62)RLKHY3*m1X*sk%}y-C$$u>a>0Y3r>?Dx1?>g1) ztkSFxM@~NR4aD}~(4cLh%g zn1Rwq&uwm|Zp(>RrDdw)Mi&i@?I3kR%v1lY;wb?Qyh=~gG#2wq8}9k6>^BEzvAcB-=6qNwR)i%k7xI*r^?JScc6cg2bcETup8o?-Di}7} zs5@ZXL!=|Ff9}>D$dY2C4qO>o&OEP7=Szh*w>Q-y_m3!givxVEliIv3s|foj+P1`- zu!%d>zxLk*tK6gseC&7spI5cMEzL=t*YouMv>LUd)9PzmS$memO2u=tug;7)?Qo{$ z8~zL=O4@-$3FQlsi!Ya3O|YX zG6=94GXPQ3w4Rt#Uk$epix1arWiiCBx(vNo&Mz86> zec{B@p`VAMo+M6D14D)IXZ^lg5}c76Z6NsqjC)nQ3Ok~GGA6JBzsl7G6rYf+w=?;# z<6L&7S&ooTA|iKq;&z*$ICWDg={YE`0nFqRndWt|=OB|nCS`>W`p-Pxu5$GD<@vF5 zG}|Aq(_>0B9<8T2UUp+&a@M>f3(qh0ViXD|ij4IU+CbGDCb7_|^5jp(Zm;%oU{_3? zkXp_kI+qR4^ECEL3IQI!>I&S|l#8fgyLg=B^WZX%UY zO%P>cA1mJ5*Og+88-6@h6r9ju?B#rnXC( z?KS~0X{OR3weiM-ejq1nTT3G%m^DSMJ;ce&i~*5ZUXD)Y=^-jHby-`~^Fdv!(T(>J z8AH`wfDxB_H==!>uFR^-Qnt8&SMYEgvQooDBDf8xYSPmbH<=|20WHwTByvnmV$zLe zIuZ<_K${NwmRtl=k!WdQg7`k`HB7g-gH?L8tP&8;HEdVt1TE6A$g1=_G_z(5#OIy!;_7NKDDBqXmIH+eRddu`g)+S zCW*o9Ah|#RoK+8$5sV4Y0rUawwoXuV;HQ8usSPm2U5BV=QT!t49uR5qvs?~9p<#^$ zLxm;*iv)gM$@XGtop`n)bm~{w|EliI!2sZ(`k03P@)Km=ip2PkfyV{xOaM{q*_3@&2g&dLtW zfbPZQ3H@ZZ$i{cYlR}QKyT2@#@swh)r9bq`y)`rkFA{Ni2{Oob5b5!gY`CbMM6REx zv5~n21dQyjgIi*9-E0lrh4fHp{&O5VXt?fnw5XOOZ9l-V!9n5sOU?R!Rc* zHl^QBY{tM51O$uu{*M-$Pkq4#Z-Xwja#Xf>(m!G7Q2Vpp{bG|CJv-#cc$dMp+Q~-n zYHwR2oOdSLg^qQ^(HYAhR$z&|?JNEJQ1HMn3fgg|3A()?5)kYup#7B)m=`nFK^L%+~3bJj(%_ zDeiX^chAlJi@Zz#&bnsFP;G3-Hzjvs7HmEiC)z~F^I5R(SU?6%A|@(*4609Ic}`Sp zQ+RVfTNDv6C0>|Q#Moahv5In2Mc9#hy%L@i@)+;{mEKY^`+QfMiKB4Q zc6|1}OyaxxzMjQfvE(j!cj-jZPrY=aTU-RALT+&(UBKK$pDS%7RU;iFF>m{*6Dop> zKidgQt(deTSX_9XzdvA%iP^b@k>7{(<8x`aw`-#F4zoel=Uja%A8aJwjfoU2tSQ@2qO(hzTAl351je`p3&xR}H) z-zmv0XKcV5R6}{cfB^HwrsB|=3Hx04YvyfpB%4bdWCVtkjxkQz*6K4u#oLqopL6z6 zqR7}j?~egr;X2?eoT~?X1y=ycP;1+x(+l`?livH zZElWG?p{S&@}vC1w@K*x7@L9()F{cazKpnF5E2K8J@6=3g;1fyWrn7-%tpaF z9gkFhooHP~!qKf6$NJADEv0kiXSwoPvst?7^xQ5{C_Xp62wTxPbn_8cfn!=!`w9;Y zPpn_~R%=5SQ*2x2{mTzG@XglrN0kXrvA5cHOU9w3SKGc!uLdF}gn%F!xT**nqSeTl z%aYj%e1l#U)N|G{rGv@`UhignQF(VuV>^Q4lFAh zn&wT)!&pN3%t-3fH8ufU7Hd~ZB(N`mRlRP<@1@)vIgi<0k#aM-X42xTRoxd@@9uEU zrlJ6O63lq}AZ1}2apm`YE^$t^HoJ(wkS&)v8kRVJEU&#~d1Z6UvKm;LZ>$=2S{Dl3 zR&#d$Y7}T5)|CGXnIPg*Z@!=^XgB;qH)DFg{jjJ&5$yCTjtb#a z`VEiP_Ka!v6j%_+6Rv>qI5mSiZeM?J`(IN_JnvmqMpIPnH?m?!`^~0aq|pzv z(Q@dncZsAWaXJg)#Pv**uXb;|CL`{K8zQm* z?*0gRDC>MdE=jn9oFUu|N_9;pTeiW@>a^scb*cK%m5sSL4~O((aZc)Jb8rp)21yvB zhl#K`PAfRf=D6P^bjmJ%#E#<*^VcmI6g;!?j?V`OD$OCV?;Ym6b{H%4%a9`fepG)= z3S7KP`z@uBky3!=U6bXT+gsYW(hv9KE~L_M>dn>}1InG=0j^*6jRdK33X`RKd4%N8 z)0#bMq*os+9rZ-Djo#(e@2-RDf_~-C%yYcXulyG;tkIWGq~CIDh{}FEas}K8vL?Cz zoHYrS_5|ZMcJF7_DY&%4i{~gE<<6tyJTlhKiR+nr*FHT059+r>z%%&vc09(J-bL9P zBjbgWop>|{57XFX6@?V(aBKv>T{LU(nff}L<^o#No4+;Dfmle9PCHlbWM zi^bkmJ?CisFQ66i>`n=P`n@~8Q9wCmAI|5_Sn876Cqe-97=dpk^>W%FE*R#rjW%Tp z5{{kkgkxJn^GYQDm3lmF2b1i`&^#uCe4{$qr1+aA_E(A37~^Jf8$I<4T|4Js=_BaV zwp>^iP>jt*HTSMnwG-6QzecEUlt*X44Qn&Cq@}bxklPP_8s$bj5MU09+rQODBu3_@>Qt65lJI& z>$ji0QBFL83Zad^v!22pz>3cmWkcPbc)H+#v^ucDslt6$dZd0x!oEa99%t4|U-e|u zum#TAF(*4c+bAq~ysqBebBnfJ6;%~zo?#qs+W037Z(q}f3fHBY0a~>gv7PnDPzEer z3{fSQY=fw?A{mG$tu;`}HMu8#PHsw&4h)||B>Kho>YI$V{DO!)VFydA|4C!prRiw{ z!Vu3p`V9lRiMm00^dNjDm_^E?e(mngZc`THd@|&@mD_TYL4zT?pVILC<(R@g1F*Bm zUP~Md9)t!H|2yf^Xq@vvwXF1g!~!0dT@kkqmvfOOS=B*2us(FIdjIeX>C3jA<6CaHhDmG!Widqlh0+rXWiwpPs{K(4*<2`KCru&12^# zJErM%e@(hVA5f~X&Fj`#;~9%RkZ>=zrK;XGOYoxM*Z(Si0s|~X`-4Y?aHq%6G~^h) zA({u6*{_?ao0H>EHLx726zA}r=VNyEW99MFzL!Fx#|EqcV}6|={+U9GQ{Oe3#>?LF z62pZV0h?@1LA?Y^(?Sv=8Xd8`nDsrxfW&h0wTdlZLQDGJXE|zQ3&<`32EZZX{|qxZ zsL9Q(J{7PT*bA?HE98X;ln#XTPtE$aWOd>=ewMql>}Fn`&&Af|QwL1C4}z{}QxMS9 zJy?G!sL*ZqP^sBdL-``YP)!3&&{0|O9bb^sToq-M>jYYIpy!k7DzVT&I5xe#&MSZ{ zJ^NjTMI}}eXzC5yO5qacuVUhK5;n!m- zTwgwjT{#Dq(rM!=lS$u!^$$C!_N;ZA3JmN$`uZNTuRT^KEaAr{O)zxf;&NY}L%*1q z;*}*yBNjpl%ue>=avMArNF+763`Op#$;Vr=g^2O^;opS$o&bjM{8j2dc~z}WH{3F< zIWrVfsLG=YT&*fKO?8|A(8VQnz0b^cExEDe!RtjOG+B4YII0TSKt=XfF6j*~X>8mx zTE7b?GxBVK2ZT(V>HTbflOc~Wa8p9Egm;z762i0XE#I1`79f63{&JH#l}eM{KZu=8 zW7-V(rbOq*u&m$7%nyN~o_3vgr$!OlSXb;;BMZq2>%P{(I#k>#G(x!^f4*+}nfkpJ z2vZciN;E~S-g!@51fM&h$#{bw*;V+B<`rW0;;FV0hdzdTa@%Upsm=_9`tGUwmzc}f zSoWjV5N{pbOEalb-Sl4Vfh-^jc%CwIoNOTXquSfnGq`@mZYT5@6q_pxw<OX_Sj|Y?%CcTL-*Z z>^Dr&C@HGADH)=A%cpX)9m?w9h4l!$Ptn(ap{sSVy_gUd^UdFmy+|(>`Zfy4JWGh!NF@Y-$0%u~F{-&?_5P8D^2Us_~ zh3eCaCyNnY>e(Jm^Qn!$kP2`waMA{_EwpZ_P3|SOk#JDq;vQ$ z(s6{myKtUTmXH&$bTHh2=Sd9Zd5rOY-9d_)d~uZM?s>6o@>o;)xn}$1t6H8pC{Cao zz>YVaYZ>KI$?%aO87nReq3CBSffScYiFb|{qlTU_Vl-S1oi+=^AlLy$vS#yOTa?l* z>2&t}f@JjVFhf0znrZa%LnVgCZU|sk^7-yT>Q!cHDZQZJf{iMoYQZkdH#t8NP}i`$h`SaQM;i5pO? zqkg3G4ifAI=B=sQ5)C32QO0k~a=J_2Mvw}HM2=pcr5@HfIC0jUw?CS z83li@*NX3-9!Bo%t38FU8_LiwJxH06yPxrNIdNivk4k<;Qx1TlB!dd43=2z!A;0TA zj=*oPowQltgLBp2Z{9LV=qS(09__T zObuMH$`}u${xZ%hJ-pZCLJ+1T#eo0W4!YkUEfi0T5|@<&UM?Ox6h6*;7TcHmsmNV+ z;Q}#RCvl~wG9^mblilH1aqr<1$^J(9_Uq&q_Zb~n)bJ7o+lgm!VVp8iYq`7z9W4C^ ztlUIfGdF*MX3bheYzd4M82UTpE__f!l>BMlqzF{z{Qz@M6Yj+ZeLRisrx924;ynte z6|eWx2JJmt)8n4CEo`Q3zsv*5o56%Xz^t11g)k3&2%OOQ=~#C#7XQ}MK(`JTWUGVL z!2~#jmp3LDn3CP$GFeE`xt1t{GG`#Pk<47UL`f5|U$#|M*p4jWAdmST9XsEmJX1Xg zZGCG$JhSR5%TC&LO05t^*^Dw7b^1OhOA%K7S4?x$Co!vv>RA1 z0vj<~rK*}JGdvJSsr`byGdXlcJ@jnp-o!pI(LZ2dqE|`O;NzQ$Hi+v0F=p#s6&>PQk50d@ML)C#HERHBw(6>J zKTiz=S^@HD39E^QEXEFA;iwr3OHDB&>Xv`hKbqxKie#}mu0`yZi#|p(z8s3H4ZPLl z{72(d)vdaVP&{_cno~_r@4u^as;@0DO66UpPrQZiBacCP#^Z(~hvKGcZN;@$b;Jic zM}YX(4}g@d&uW_9FPT;sO_OTzeeYbF&o!N6I2@-W^m&8tkmEdul+hOnbf5-eKCQL* z`@NH|d~0mwj=&`Iie11K5P?65nwy$P!hjVQC~Kgn{{Z6{#`EfJXSlSKO03FIIm47r zIi@%yM8!?uQGMQP!4U^Q9<%^<=+G+^LziMZp^S@N@Y^CZrVSdEZhLgLh4oOf0Mg0X(`RN(5buZ-^EG270+Tkp4fcjnsR0b*Fx&hBbb!drsVg1GpgJ{o;)*# z^pN?Mny4D9qh}#7Kgm^cR6j$aQb`W`wR9l)rz?0@QpE>4Mm`QqfR-2IpB7%oriP_8 zR_!!;dl+?1;JmXWo`UxE%Pj=_u+DR*^GOr~qMLp{Ieom$&VX4@5n)6krk^-A_*KG{ z4^053aec)S*bl3}dwBoChPI1qB|K&dl~P@vKl9lwyzctyeCmqswvM^zO@zbN0IWyx z2zFS^b{d?6tUr#rsQI|gkS_;ynt+DedW^2@`OT2m(R^kZQcrcXyX;*~9agxPhZH`8 zGr3*}Q`^X+mRWpu&YZbK48AdR*!ekr@PsiVHlVjxNfIH88@zXOUI@e|ZYV6-F1?WWB~JJxTQ!l>^*AaNr`KK^6DEFQ_S)(O$pVKC<2|(eD9KhP z?Ww?8uHa#8S?(YR?sg}o!xgbOUV+SVB#S52X9uT!a)$k)wT5>?>-c~M> zN{ubxhRhK=Bw%BUL^ETHRX9Aq*6nv7Evwb5dWsaPN;kGu?-J8VG@jR~(Qz8iqt zVs^NlRxG-E{J9rxJ2zco2NXZ-FeMHxPzpPtt$l>O2!mFgV&s>R>aE*OUF(C+C;|)A zy|EnCOT+OyX*y@Hs5SL?9<53CyAYIwo@rQc-9fwTeHJj2L!vos-Rj%d(qA8YRp)$p z{?W`dgp1#x75ce^*%;A%8_VA;hVzhX`$~+0<8jP&<^&IasrV=qnw4AaIl#JuOk z;d(TzCp~O;aX!awx65XXct3-C)R3PhiHM{pJ@>-Na2Vtt3!L{8k19{ppfzQQ;Pxr_ zXde(LIqImq3O$_TxWGpyH@}CkPs7bvubIzaV@a+kHdnpDehng>s{F2Gk3c2#B zWbQP&^suTrACbXspRUL9dPd%a;B)diOW#>PCq!6|<>asjY)&`#dx+A-eZE8{yPvw>5IuxHKrF{GDY+$o$|iG)X|!?iXg}K|ojf;cv&-SA>SQIsq0}H# z6-dDjmQBZr(U9XP^Hlf2VVrPT>l>)`yKao#4>5g&JRY~kzGaO^0~np>X7&x-Pr0R^T=bAKriI*g^Uh>450khp(uqtzyc6x_xx2({A zux`t?sErF-BfQphiQ3J(t9Rf5DfFukv-Oixy&pF;_T~)gV1fNZ#M{cTy2|rm>8bBJ z|2%X1MB0AI86(AR-@0#Khvw`M@$#g*3V zAViZwG61mMFkK7fw}Yip04QQixgT( z$_*{rx$0jlXtW@=tbJ}>>F285ncZuz|5&*NnwVln0{W5Fuq%C+TAtKtb2PpHHa_u8 zzos|qLy~5~`nj}t$1Q9=;~)zSeHf?L{CG??zPpE^xQS&TE*!KOziR z!=%$F`u%K|47E;N=6nVt{_S;(0G?d>M0$HCW~E9cABZW%Q!nuZk07)-!G=C^LX}g` ze$zR-Znr0+f|gK+6{BTA!Y4|F4VW0@*mBlI)8xY#)D~?8{%T*?-oueQ8^ful1M%dm z+IlqZ58aE3h^!xyzTI;}KAt#J<}f(n*#J`D*x6hiq+kXT3(QxB!cd6W6HyuK>~n)* zk(-3bieR;VecE2z;dW{6o2(3oa3s|OMT>9xRjBt6r(T=Sr)F|n)?T5eso1P~urq>E z6ab;|>^{KDsmFR!>#-Gm2z}h#)C;a|vhE`1^C{Y{uo3Pvnp5kPsS+QN*3r0?2?S&$ zr=-uD;T0+%cV(2E!U$C}g56gjV4ssF{3^Vrz29VvlV5K$pEx_K{CSZ$%GZ03<&qa3 z#jTNh{jhybyo9>IN~dj}1{lgI47#Se7J~bs{6SAferRIlsN1kw(HnC|*bcTT6;A^g z+O*vuz!eW)9GW zi_U6AD;-e7IokBxR(S2Ge*cv^z7#bcEB=;eR4d>q-U|=$EP6I;(|`#!gh6RyGG9?GUb^KfN2Us6bSal+|OnhZ_EXWLjy&;cYhyEX9dIX zzs+=bCoRL`Z`0|Oj}taQ$;sTOc|o5&^?jYRn>m{I5YMP=l&Obl;vV#|upI&1LN6SaSI^TWNA1)BAjz<&#N zg-tde{L>UQ0LX*8rWQtRsA&k+GiMwGz4&yPa}gMd#=SXPGQlXz?m^NDx=PJ`-bbFF zpA&e6oIibgEl2~zyww@{o!$j<7JnC@&M!EBU*hIh$I0XKE>~B*AI@&B{!98mfJl_; z`)tfD^v)9E@^G-Cw>iJ>@b8t`TBuWpjDJ@g0JZMlM6W=t8{#d!BZi6Ia-n;`^~4QY zSi$w-V95W8{Q`LWzbhvg8TFJ8y|96>u|1Yh$auXLJ%o1>Ls$|F9Pa=zD?VU`^FMeS zKX^%Vs6jBRakZ|Qu5-YWjWJDr-c|l}0PKR@GyqFZN@fWx`OWr{EI3_od4Ul)Fw*lE zh{d4Qvi=PjEGo?PjT^-6$J$YW%aW^)u*|ua_7uV)YZ?#s+tGHFoX9~hfIV3S#od#q z;~Xv|6g8Ij#Qq5o+|G)AaneS-gIo;#*n z7#sD$8*7EI^c38KsB=WHpA-`pR0v?^mbIz4>l{^LtYYF2y%r7=t=k@|Q>ST4 zxU?tX*g9-nUj<9qRy|8^C#(9K5XJh75(cYtyE>ynW7bh)dFd)HE#8Mw?nhe=+XL;A zTc44XnyKPrg48#*(FJs(&)LdBCpew#jEJvjDaa{2pOmKFZQ0z57tVx9MGH zs>S(hw?W+;=>%%YxPtqInw=k3Xd}8t-1HAs8w6Z=7;3>S0E8yLtS4-jxI5u%s)O@D zQDLyd;BW!}t&!Ach7iq)Uni3{XnJ}baL=9af-?g3gdMOP3WMgjtel1QW5ueBVMd~G z=GIW@`0<&bj+sZ5vLkB# z^ej9Kzfwdt+wI{2{WD7Y&ocuPnnQ|LJlFBwSavZhRt1VR-`YRWVwm`KakC(`Qmh^H z-*B4WCyOt}giSKXYY_Ajvl`kptCKJH1bA3FD+9(lClQ08)bv9p4R;Xo^UEEsv+ECL z7xaWQj2*xAxSYMc1VT%Qr(6SbmvrJq85W zXL{4SQzA)fzx&Z2QxDy$Smq=0L*8I zp}fm45ZI8NO_hxdM)~&Iu$o7BNAp~H zBNxN96=*fd7XJ37-;|r`mV8VweWm?p2{R;4^xK$#pKvS$zEWSaIRzL65bVPP(B8Ha zaW|<^rcZ)wF&lHzv@B)n+49Qp2&`(Nu7cW6@bw(b!Tz7}l~?n7Xn2G>CxGehZFkXP zIhhk{k zVhuW@n6iFaza18pQO%&`cJaqisA}}XQ({4&r6*es4(|&?+ZS^eoVS7z1 z&7ViJDKbOD5wUi~#7*={(fXTy+79Wa|D2iGvSP=wmY<%bA$S~G%gdjqg1};xW{NQg zI1$G8e-whP#Zv3dPUnrL=0+h%pcXQDHlwMx`v&MVG>SOPoZ|WW88F6$0IYfL!86Jb zgrdJ2w4NF!G;fZXzcoZP|rlHN}d?I~>oRUcr z?&u|ESuX#skkG{0Q(j9gGiDPTkIzX;pEl+lPC)+D6 zf?_6X9O(4$W&Z4*U_qiq$!5&YDkLt*v;&=QdhKAkm?$!}(6`N|QJgRVmgyTRS~eg{ zfEqbCq&?f)pe)frKsXxb%V+Jju6O2sXAw1lZ>uc1%;os$)35?1uAK&0wccly?)*g7U6m7q?!D#$y9A*hABX=8>`Mp#wj`kP)fZ42>7e z^mN|nQS%p{jzndNZdg&edH8I3bGUOf zgXFUNLS`uTfXb+Tu9#`=tU@((e>27*7M*J33!0hWRmH9w) zPTd5qh_2`8mS`(%hi}=itAOtnP!AW^C{TV#1Vlz$o5`sFylg=M-wj9GuD05o#W7?= zmLIJ2w$0j5i=V(d5mC7H#v7oI`eBwqao>Y@k79VJ^v953g(f?Qng)+h^pC3#WV+pG zIU$|e*KzK$|B*00r%m6_!qE?fWuE*xXTQe=;JM^!9?Px_=V#p7DPhK{?R@@wZ=)Mi zcZX>mc{_N+eIK z0C4hJIL@rMV4H5(Kg?!lgBH%6nq~JX%x29hTE^XRvv*yvsQeAs^#L1rA*%NFs>Zvf z1V*I8fCCpI@$Tt#7N`E&{3Ft*B zSv*$SA(^|TvSm;HX*#23dW8LW#M*VqgV;~MV;4&zKK;@7FlrFjW`5BG+6Sck77et- zC-R{Uy>{J)8551YOnod|!TJh;bg(Q(y>k8Sxm#ecUM=pnV5%usKK|oZ8q?h1rwm~k zqPfKSvh-qS9gQUGzItv7Rf%|BNV&8(@pDN3qxMSZ5{VyLD;q8qjQ6*@=WgyvHmF<; zYYoyStzbGkbcT(8^nQssw5Qj1meIA&+_EnWixlT>(tW8%qEc>-pO-hcS*NRB(BAog zgXy8INs7)9uUR-0Dz|ZPbIoB=e;H$l{QClU1U!Myednf% zE?_gaen+1Dd6CnFg|xwLOJIHgNvJiYmO8VB1dZca(VWu+5_0AoT@#&dG%Yr#xl9N> zR0$5CFM9`JWhYdG(b0yFfGM&za}l`U@U5uq=}xqYT;2Srj|(f%Hg%P_W;oub|RGbTZAC zkh^%mY_|G|>ZXBWv^tZ2&zVyAr<*bW`k*L}~W?T7@w+}sL)mTaJrjyc6WRvsJCS>ugLkgE#3)~fabb0)%1g2(7VhIZ#zjQ zb~pkOTBxc(w9|uPhF;@|@0%f@G6>~|m+~6Xl_&jHw;vdG=qG3B^N362V7u;yeXU5t z^iqGxUqm*Ly?8hQjJBXnU+cn|J;lEiR@phdl+7`+KwZ$PfZThREH zqH%uS4zr)wed4DXg@(2$$Y)lMH0LzZ$61UkI>mS5iG<^9W-JcgHXm^G6e8kCQVonV+o#XU#o(?C93Cywt4TsE`jHV|T$A`os30oR@? zj^uA>D_oR3HfmjOgYcliRc#iqlriXZsg&Q2{hs6Bp_LO=?fwv*U*8OMB(HTJBJufw z3%2FU{`03&>Am@j=zQ_ye~HeIgl>@X(nI`n2UzPsD6${13+%CAT?2qQabe$!@^{yn z8xkXI3Qw$<|JB-1B4EheE?f!qkdec2$M7d|FKWfxkBx%}yy`B@E$oc#gUE+htkxw4<);@9JZ3{;2%NA0l=g(d++~PNvLn=?90{nO_x+o% zMQFvp09-si+O3ngDm4jV3JgCmJPLChWs7hbMSM?72N)yCX8LNygQFFc@PInHm*=Lx zmZ5X&8^tdMWkX|EEkC8tqusj~+tN1FTI#Lxnu}dZqfxNQ9DatUeoae+AtbOs_vI%d zqPlxWDirOOn@MZ~RT~Xi1A?-fg)6jG-*u6C*zfMqhI4_xQi%YCtD#?6&IeLOWXp+k zKRtpX@@x{u~3VpR=F3wm>83jtqU=|TfO9aFpJ`x``q-hT`G zJ1{AE#J=+GHTUpeei1)%1N?%`vJsb`Ho0-2E6O%29t&u@fXb6baG3|y3~ghV>eT;k zU=pln#*lc8P;W%DKZbd2S6XZP)`C?#aQf_v_1;g+TNaITWP`f5}raVrK)mh zYWVte$q>!-?ucxdj~^H0mcO9k2aGz-$!>=L2y*_G(qp&OgBnI$7GM2VF^A7YJ(>>U zL*5EoA!mg>16-~Tzz%z$!vS1Esw>M5s)&d7Dz|gsB6!ckoA#H$$pIe8#`ec$xSDu> z05;CWtn0*GCY`cPrkS97T#fY&x1_s!@(=hpHPcQzWF5o8o*aM%MfldL0p9RoXSu&IyU!pQh&`CcXsM*%tRfzO8V@#SiQP(R{Q09L!7cM(QI{HMT6Io=S4FX zH`X-bzvIw#Vlq)Po()*C@0Wb#310jAIdg)1WN++cD<|ru5J#Na4v9@T6F%y|%hmRW-anJJlFY`}!keo?N9@Q*Os@s|o?uz2#kU*;^HG0(J=I z4aVqnIQ9 z-nmA4v{jdl?aB@xGx}&FoK%zY8{Q4EEdvMa-5lx$Cd!jvSmu!1s|lMgU!dG@)7S;LlIE_?C5O;iwlOb_*$W+iKaamAPza_W-+Z)@zZo+w zHvY-`;~vq`Vmuaw>TVmOi`>q3gS{#+2eXa3#Z3@CfLQGTP^_)&;`9#c+7a=z;`6Ra_+#ev-c#IW%4 z0e1Xe$v{66b!dJ4H@YbL;l1As>Bw%8i~_?@w+^drSL5?HRIsvDjs0x-+})tL%c&Sa za=_47Dboh40z|+uIt3_qjaBxu(9YZjZuXF?oTXh7_Ox3NjL8}3%Rti6sCTs3X@V)2 zh~xl?Ky$8UGGjs4lHqVFivXpxepe@LoK!Ma6Jr@4TjQDwJ_8E(yb|=9(J-LXF3;GQ-W2{}59b9P_S*W)8t^n! z5r4LH2f*eC6nJ@gLlZ#NQthjusTS5b5BC0->G|18WoC zRQrF_GQM~G^!wuikNh6W1%3v#e9g!5)||?ME>I zd-;nY6P!$a60dvl59VRpVvh-& z1;s7qy_ER6TFWdPo42XXD=twKANzvXx#e<`5fSjT@h4EkkY=mEM6h7GE<&KhImBwb#`^O*ng9JMPFN4%e7+ha7@!ME`G;!cX%b6}KL_p|S zPhdz@UkiCEtQRbz+PfOLqcV9jJBgr3ncn$`EZUsn-VbS*GC^{N zjezVb1zw1i4`^f8xA}UeM!PjEmx}~#u|?hpl-i{KD<(RierT=Jy8Qf}{NQKo+3yAzc>D7E z6emyY?U}J*zfjXhrXSe4o0ZP5H0^!~4LrONb0Yxyo#c zO?xL^D<;toCuRwQ)v^;f`U_4QAO<>TQe(b%6CCa*#I%e_s!#KP-435Ocadr*4ImR?f=}Uz3DW{b%?L@Pu z6T79Kmp>BLY+V(;>W$>ZLH6;15BtE6pluK$a9|)aJ{-WpH z9|tz!M$8x%uY5m6wZ+urn=fj;{Z^&bG+6V1+u)I#*Uf)-Fk87jh=9G{u+E}8W|AB= z)BC&g0L=I*JrpYW^<9H2rWOQkh#eowXKkweNkRQY7~a3T=dsy1y$G^jjAk!|rQI3V zPTeCBZg5xD$W?Dz#;>kl0b&%=#&bZqtB7@QUZt2_u^h&A0tcCTK(d{|GXi2RjynWS`(Y4g2uN)-H+1j( z;*05JiZBNnMG2zU2)4Jv>h*Q$uUctxjj-qKY=|VM)CQRK_x@S|SW>dzIc_nh{>ga& z1h#kvG=+n}*6L{Wk;1-9smB4VZ*+GrR!6Ytg*1We zv!2vT%t^FmL+sZmAmsktC;&uz|GiNF?1_bv04=hCtfZ5Vw*IL2WqsMu!o20@ih?1C zVIxp_R?621DPM$Osn{6Wk#I@Ucl7`z5=SIuDkhGO^$@YD-zj32lj0pYB|72Vy)@)l zPbSsUA}dPRiDihAyiv)l8bNT4EEFih7s^&IPM^xaEEwE+5_Mx?lMarGgk!}|&oykQ z@Wqz5bW{)@|1Ns}OP#f!LwS^((z(7Bvc!Ulmg@M_cl*~qdsgda-d1?Oo#OSDt^^tO z^e7?gVgQzBm#eiEFlcK?8!2k=X$c)3$U}~+l#`>g!Kxyz$741Sizhfli2GxigK~S_ z*C01u=_FqHAejb0|Dt(D52S6IgAQ|R%~QNQa^PN(QH1wRkGp9LC@%BC|HSGY=K8tk zH?014dmswM$hun@_B?C@myM=H?e>&OLy+^96VYQ_x%4NQe_kz3(yWS&zT7zHh9w7! zfpLUAoOa-qo$h;o<9de)=d*729I}9GF3^+zrQ`p64yAWkb^=(uH!Ru?bs7HU5q)7P zUT14S@!aNH&lY>Mn7tI&c?1YEFv1RzR?lwP^Vzn6oVgdXFLn`F79PF$DArPSw9v3%O!D40W#9}b7GP2)G? z6*|n7-vgqbhcyua5wj7aT0f3I4MX7i&pMKF{bB^bAG#^dpkm*>Zup@TyKbZ%)cA1?wLJO={eQ_L|kvaG-={9t4)|~HLFJjI;p2r)?Vk2*iSSt$E zFZV#~U}p}P$cjHqWPnyY*OVhY4Xm(!g)DfX`@1O4R-O-v<6YDNQO(7FOnzFleeWv5 z=};+9Y3GyyDzj|S&*1P2Y3WYN{CsIta1BU=VQE_Dm<4*#`X}?yl}f+wS$$PVyDelj z4tCQPniRqHA5cpECmv$lpqZQE&u2*jcS8H}EZ+}Vk?Yzskv2_h2w$uK4`^@kI4db8t z9fE2E23wRg^Kdj+IMlgsYq6>AwBK!vHh}~SOj%xdJ%98?qW8ybQz1h7q0`&vw*gDv zzgk&)EkDsz_ttg#=!>{Zm7AcY0hY4BAt@-fCT2Y3%T>ME`6`pARH$14c1Y_**DjaX zu@>VWgOoKf{7sEn^Bv`*nfI3l9!m*HFvf0}BM|DWTKF&MmrfNuv7~f2)SH6%S@&?_1v^ zoHF=wwn$TL5RUKPgHA#xxgjp!G^@Yy?`5i9(Q1jrFXdm9%Z?VDLWsA3H{N_M~feL-1m|Q@A9P4WOkg_-- zbK4u9z!4w8U--9%_gxC_PgF9{@UfRs7u3Yb4*r7xxcIwuO8srxo+89p)lv8%al?zi z>Dm4HXQ<;6*YRm-=sy)^#kslm!5Q_S{49(zx%nPlUz8}}POeCr?N{J!P*6F_d8;WI3a zgheybn}6z{Y1M>myjU=3@Tm_JZo#g7_Slj!Qt_zAXvGqwBQ87RI#cH1&8mE%1_pz-q7E<}jvP~x2b z&93|Z%=m+)q|Z+p{}YB~V0`~SJ;na3I+2~9i<)hZ`W5)Xnqa{Pf{T05TipkYR;@>- zlQq+wkGB-&Spd5Ma7peMYZfQJUp#z0BY9RZ42}iy=YFjHPu;be*)2d3e5wm_Ql5OR z&$zoDoWL8lU;E!DCLQlPCOf8>N#lw9ZP59q)`H8sp0#WLdDHLLSCI9{?Ze4k_R}xi z>8io;Ea+U(xg}#S=84TN9its%;Dnm(d<84+=bdwA(?f|-4XUxGPR$HlQ{)@nwt5bw zQ0CDIpA<5(v}<8&&^Ni;infur)oyFr_COrjvJ6hF z{DM8@nk~@m4RV~9r9BA7TLc&XdS&6;(Abc;kTW5Q#POE;SIb1?jYl}p4-X!2 L`L=Rj;JN<=-hzxF literal 0 HcmV?d00001 diff --git a/Messaging/src/Tutorials/img/tutorials/VS2022NewWorkServiceConfigure.png b/Messaging/src/Tutorials/img/tutorials/VS2022NewWorkServiceConfigure.png new file mode 100644 index 0000000000000000000000000000000000000000..ffdf246db326e4399de76a22fc6cd642ec35e317 GIT binary patch literal 18338 zcmeIacT|(s^sOr6|IQZe}F)?MrTi*aEgL)hNTsn6mO#lx%%4m@6Y^x zDurVl=0WDg=wGN zvg6bPuj9o}GG;EXo7!{o&rdHe+|F=vXt=X4>n-f;Iz9b^>#{q)%&>ExT2$i&^kIU4 zEtSl!;5Ox$gkFtkV3_#%F?dR(S*0EPc9Nu>Nx@1fdr7;tnH*CJe=?*+1mcOk@}9tGzP(1-Q%4I6{_>!DYUEq4ILLr~v*Zp1~?s1c7du zKUODdX2{79*`cNq?V>!l4a>l?+Vrr(S>|l{{FK1A9$K~%xX8ZXn;{>yl8w%mhioGj zF%&?cgMmaUQq4%Kf!~0D##0tVG?Z zg^va!^o8R_By|j{4x`&py7(|P=9MV1vA2q|e)(0ZW8qp3%7mKvLPo9h`5Xj~7m;Kv zk}64nA{kZP#IHmFu=tOMV$u7y%uH;Uw)?pfs_n>1v4iH!#FoD-^dRA6toB0Xyy z6kUXYF=5Ml@PdA}pr)cO(#=~4e*tlb=U;zSJFKJ%u{7tOi1vMLgxhS`rFB3t^5B`~xOpb?g(a<2pC5dsya*9|dY zrf`(mXWENsQtvFc*r1JG?4Er;I4}zaKV}VS<~ANOA5T`(-gZF2D?>Z##Tp(@+!;69 z+mX1uO63@suUM|cK+YGuDQZ-$N$a&3GBJsnK1Y&el8ecT8(C}k@9r!Mq*7&Xv+P~C zAR(;+u61{y?PGe-lmuyv7A;;JNRoF35hQn{0nDdHqSnZ{f!X9Arrfo<49n|#Epf(* zfl95R>i4j-@j(I~e`dh~_im3meP|VkUss^QS0oCfqLxCe*jo(`N_S_+uuGWLir-k7 zs`Q{pDMyxOM-)6`a+2qBKStChVB)(LtOmt#(u-9{`ud zK}z$$YWa#Ym%(GGQ4eDR|6;xGH=KM@;fKF}9eSi)_)Du#aygiUy`plC(B6(eGG% z2c>23RRV9gaVw0KX>ctqWh~Zb|Fn=gwZP1oRs$Qhq=zz;jOyxiw*;UjD$|%l8ksHW z&Cp-?+ApI>GX3Z$K+Gk(yuM6Vk zBrzqT#2|Jj>!X$Jjy`7}<*uG2<|K8D7j3@2T-@&_EHV;PZUlQuzMJLKlGB^7e+w13mSvuNTl4oxMMm@k?pVNb;XD8=hkeR*dn5PwGaqelX$Het1q(M013t12U z3TC8eDejx4Ci42l*1;A{Z?|eUj(tC)UYV0kimfx>+>g1)uAAHRVk~+eBWn*AAKVjs zGmGaWMinp72T_pht8i;yl*QYKM&9;wy=F*#?RFJMkXNdEl@|m(OZNb$!n54`#Hw`J zA5ml9Y!(#YZG9B-lr52}MRaQ>#(ZTw4IYD8Kyn+)v;ZT>P6A5>dFv21w?lgSf@H+4}>v636N!>pudguhSJSoz}gE2NGHdn#jWc67AvLX`33 zxq3fNdeC*Y*yRPr6EM2(9=Vo#K@^|4q$cRU>K`afN9C%hy#yz@z~NvWXNXEFU0gF; zgG$2Yxhm;PZ&I_IF>BCsljo{RZE)DY15K{+50iD7e)?r`I@;(%=0dMa^y$yDX~t~0 z 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 I>2>G-07=Bm)c^nh literal 0 HcmV?d00001 diff --git a/Messaging/src/Tutorials/img/tutorials/VS2022Solution.png b/Messaging/src/Tutorials/img/tutorials/VS2022Solution.png new file mode 100644 index 0000000000000000000000000000000000000000..8890506ec5e79ca475195b648be4d425dc1c90fb GIT binary patch literal 37376 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 MsdqN}w8g#u0e`N3-~a#s literal 0 HcmV?d00001 diff --git a/Messaging/src/Tutorials/img/tutorials/bindings.png b/Messaging/src/Tutorials/img/tutorials/bindings.png new file mode 100644 index 0000000000000000000000000000000000000000..f4c0f3951d16ebe0eeace635d4880d4ce0838870 GIT binary patch literal 5785 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 literal 0 HcmV?d00001 diff --git a/Messaging/src/Tutorials/img/tutorials/consumer.png b/Messaging/src/Tutorials/img/tutorials/consumer.png new file mode 100644 index 0000000000000000000000000000000000000000..8dc78e39fb044964e66a9a3aff6d7a2daf4f93e7 GIT binary patch literal 2176 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 MqOIJZWE1&+03pDlasU7T literal 0 HcmV?d00001 diff --git a/Messaging/src/Tutorials/img/tutorials/exchanges.png b/Messaging/src/Tutorials/img/tutorials/exchanges.png new file mode 100644 index 0000000000000000000000000000000000000000..108734fa9705d234dc71c67721b095e78a9b5e56 GIT binary patch literal 5555 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

j8-N%F^9euem(8Y-;)U_Zah^YWS^RgimpN8^C zb;O@ZFpAsg`8J_n65EykByclFZ-pi&2mBKhk);Z5NZ$TTWOh7{Q10kFGX>?#MyN0* zm#+!dsh1|!S#oN>%lcslbNU>M;6MWA3P?Vf5Q}`tJ$RoO3t|Z*T6kJODFSsbys51* z@OC2n33T7zX>@K3*C%Nc!gqfl9xK~@agPej?lAC1Auqp@E)h<-xj}ON*Lq|^Kj{$? zhP40Os_wXY|B(nnMmKM1?B;@WZLkhYAD{bp@(?SVU~aO^^xo@g{Ad_3FLfRXIN{$d zr3PF2sRLU$t~A}0RB)+3 zJfgPSYEQ-xp44t$ViB&N<45Rh!+kBgtJirHN~;&=Ee2-lRODuBJHAzY2y=bq*pHDK z!-qiHe`-FiY$xA?=y7)6zu1RYq(J*zIP}DmXFZ?JXutJmvkiFL56M1cD;*CpGSOS@ zJ>UL~R!oqL?CxuICE(Y6xw-kP_O$RmT6fYWm}|iHy5{F`g8*#^b1;kZaO<{5vg<$v z;jy%wI8u_IiZ<7t zG-xhr6s%Me%@G+9I&ROhwh#60oFjJXCNCvIrc71ds>_j&M)=!trGHhkgY0xmy`oV* z0h`+1k51>Y%#{|3z0E`aDCK1a?JjtAgrD}Q35oj*YQ9a@yJz~-d>fZqiMEAh(O@&9 zJu};jphztc?{=FAxKSj+D&o?8>3h$)evVMmY*FqhNJ?sd%1$DfwhwnldJDg^@*+=E zy=?W%^DK34_cs+4sh~-ZgK9V2{Yj4qaPViu*npmqjeZ9WR|YH0vu?0?hA#1fi22jT zw6lRpAUH3OHC^*In1-HlV0{)-QKeZ{jKdYYc6Se`siCT=p|AOH3FD9ZY$^E$c{@dn zSUXW&c1Xg1MB0T z?0`nJ&ElKxgHyfR{UdVnG^a=zG~A8pulYyZtVw3hQI9LW&)?AycEhy(Gkf~KaM!;`*#8rE{fmTA4+!7Dyr#*% zbDxatOO|hByzZwds4mnZuSi(?c>p*qGj27CXiA{TLpEm34kP?Gn`s#a+91~FN9hcF z65S<8qS)gVRRQoCY4Y0dC6TMrs1qoX|Jf$)zWXJ^K-QkjxX%h_9FkA@Z+7@^fS7zu zdiuE76*kpMeZx8V{58z{U)cLQDmeH#-Z;QL2}wCoNl8&j86!zqg@3w)u!MwygoG!B hb>M$X@brG+>J;*y6WC2xhi?)9S{i!l^=fu6{|g0beJ}t3 literal 0 HcmV?d00001 diff --git a/Messaging/src/Tutorials/img/tutorials/intro/exchange-declare-ok.png b/Messaging/src/Tutorials/img/tutorials/intro/exchange-declare-ok.png new file mode 100644 index 0000000000000000000000000000000000000000..bdb6a6a09abe7dd9db556a90de3dec46e15ae737 GIT binary patch literal 29116 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%0D-UmvZ4q`J%6x5snlC& z|D4=lOQ@q+S95HP<`EQpX%`@vTW&C}##!T$g#`#?7qK6nC4L^?OA3+gFP zT!UzQ#UwQWL1vWUBG;csWM_dQqbm#9U2I*A%)UWK2W&B2F2W)C#IYP(0J!a@%m*s6 zN5CdLm`#ji%OZ+V)NQ`NR~Z9b=)W_d%zm_w`#H(dhBF;EVjHf}5i8YM~Bu&6CMbrt?Lnr;n2n_Ir8*?Kkpd^VF;!qG>BpjNvmljYP&Wu=uSV~fL*HA1(l8V#hja{FPEWxP4tE2bDjttE|5RQ7)v z-vKZxd_|<9OkCrW`}pP4QLVaZ2J)w`egwn!MdKTG&qlz(naNw={zc%$O|Y_yNRDQ| z9&tT@cdYdc#I<;Rs7HNN^~e8M-%b?BTXY+#!D51sJt?v4 z%|u9FbuGIqM{MfPe{xE~Rr>Fx`KnH@E&qQLNB?sEJN3Uru+u+H%ohE__n$ca--O|R z;`Vy#|4&pZ{wt8nLaXqC|y-c9+{X-YMgW)B=Koqc8z{fPR4i(NV#i^tQ$?rnz?() zNs7`tS{k@i`e`bq(Jytg+sTJ&L6*@W=8JU{1^0R9P0$@B1Qq?J4x}PU#rNEf!;KJj z!_()h%!J2mXo;!rZ&kF1OZnF~8-z6>3TA}M#-Z;K|2IAciFKE7k|=2OpT&ZcBpE;= z2pp6Ti`ml!C6MVaz7qH|T4xl32&$ifATBY4aN8huY9>hp0f}`%N>rvHEuZL65vo;j zmFwYDRQI>--h=|mQcO}cPT2aP?*VrlCHOhJHDc>PiboM%0ap=08fb3S^IIBs)_^Y{ zER`fI(Li^`o)Tfk9*3;}dI!BL{)QVpQ z^LUc@G?9KzxO`&RUDEzIZ~&$*BmhXBQiRDVm{LRo|43f<-;D!Mc2?oA#sVOs{&P78 za9Y3wNfCqu6xrBrXh^gl+-y9zDK`KP8@SCv^alUTid@0H&<69QlR%qsUQBmlpa!3^Ke&nXxH7m}Tx)4^_l z)!7D-K#K(-!doVh$5L9o&cKi1C2H76Z&5sR;l(f&*~44Zy#bU8Y(xAsm_Yn4(WSfu1*RD!T&a6-`;@_oCB@I)6# zBrquel{p~bI@*wTvIB#d%%qGhXm>X}&R2v=Nv{dSDt;d!*y5t=vr-3p7V!=0 z1+KTdT(}6|JwtIBWy>N^jqp)?d5#MB)KCv=`Kc*`i{L89?jh74@S-qGQHXwGfy#=> zP<^NJgL=A2kk9~?J@W$EuTP;?zqaV%U?qUrfF6#CCs%7egC{yrbpu~bjTfS4M2E0e zk&8?K=T9Rk!kXhB&sTFIrov2#t>K$0TA|%|d${^^su#vu49^cxPE7ptRa59gw6AC& z58m4`RdqiOte06I_nYL7+d3{M1R}{rTR*L!oSw*B9IVhX#^#kt#?Jz!%0|;#*zEpc z8@gwnYmzVbf}Ch!B7s)qyEJBS(js^q0PX$=(5$4SiB?FDDRRVnTbo(Ke72~>9q;`U z&*z2ruTi|VYxdXJA>>uxnlnFW*NXt%@L2{&@CSt+I4q3S-EaEHfZ;7on9Zdg~tJvE;cc zx7KKa#UlMy+xsDaVmaYkM(T?5c3i_!{kJ8z3RkCwKq<-TnCHikD`$q3%#6kAgIj** z*7cDO721ruzCBb4nPI@VAl<$8>)x}+c?MLSx7X*=&)bv3?>dg-p{-kGI%f6?=z9PFHj&KhKLQHN*8~{? z71BPE*E{J%f`Bsdj@nHUXX5z1AzHk9ze>65XNE$t#3bJq7arDUDr)iZqJN@43x@(K;)<68h*QO1bgtv?rL%<3wLX7?lL$fp zB)&)L&AwZm>+m}G{i60IIFYg9VNj|4rY?fUqJ7`F)by?)6S^qu`m|-|wY21Yl}7lo zA5W3_P+OS(xZL4(E(1jko;GU>>Qzh?dI>Ub+yDK3LiB8AFT>-oCUXU!J(iBXC%b)f zq_5h1(uSyn2?>zElb{#CPJ>WMMS%^(V&Cuf9R#f-+5id6)xCHQH5;%2CZXUV)FcCW zqsRbeB>!w~Hd5$I;;`jN+jZ>bc(5@uNkb*Jf$M z=X$>XYsXdd8sBO83hGFy$}eERmySaXLeE1rDp&JCcCc|-mB;RFQMU)3|7T^Ck>Ct? z1ZsH_gF%zF`<3^uW5jDO7jy~ADjL2fmO2J9aXjn}|Gj1BkxTILWVPq4@#nr?!eTrR zS?G>6gj=^a&%PQ{m%iD*;m=THQ37~g;u7+TZ0K|%5_&=~vyGWa^3Pi;nojBVT6yK{ zoVv_~os!ptocmAge8zb91fWbY9oI)M_c=;Fwip9bWU$NY!i?w0DaDTKNebK4jP~p5 zk|{nUB)gOWVj|QoB`0k(*9uB;>U^W>^ioqv?LsWpR%9S$a15&J0DHRGh{4}sa{fGr zH#TB(7!dBtxIiMb`S8snbwsi%J6jh%)y#Pk{U3IC?O>w#6`8cSh~F zL^J|x1reQn$K)B@;NUMcdXXqwpLSmEt_uaD(2Yv{)%Vh&oMsK*jttE+Zm9P_zD`d= zU)ncQl!Q-?2)%AJm+BRCTpo%GohA2}U(93f#o5C51kXx6GM^qPp68`o+9bQ!*O5N! z8vSLB{Pt@1xOb(PPEA((BdJH|KR@j~L^|j}%>vIipsmBx2iuw@{2hNO@RXtT4bLUe zeFKr^@2A$QL|@_bQzBWL*Pe%xE0zUa#zdDsZpibgc%CXE4}2&NcB?d*yi@gkP}dv1+f=R{MSd@+$Lbk8@Un)*+j;F#=&nTn zrK>FFen$UsM&G)H`RS{a}myg5Qr^b zwGs;8Mna#KTGp=XU3{y*v_9O3=3)l)3*E*c)Z##03bSq}%`=kV&YI61=G?u;t;cxL z8dr2r9d1ciUv})gR;)E37!r~iGyVIL691W23ZYi&8Yk8>b7FO>9YqewZyWNQIzohO z8V<3g$(K&a+?>9&K^|DfeXbUCE)|qKcHIJ(bgxIVtQxNi*Idu!&4-WHZe&bqDDKC{ zi}Y^W8(L$3k|*o^hGmOtsMmGKAqzhahh#XmcnI!m&-nNZ^J9K$H1jT3M}KkXJu!D# ze%|iaE7wlUZHGW)fB!vtK5ES4`@Up$>bR++cU7$x-9a;Q-Qm6c0n)4V@@Qm0@*0Ak z<+{kf_Dr8>o$0Zw)|vLQTl&TGLXN`w?rb%q>b{21TdCILWNbKk{=(W^@a1dNmAL?H zeBJDM>uN15m!xD*@R69{4hrpnmD%~=j*JMmAF{zm{l*LV#RE%qZ$;kBmbebyaO zA!Ys;wDy!6Od;@c5aYjck&$JoCM+vKXHf}`{3`5+OZQNjB5<`=`tNe^L;%DtG6$vMO0!CC{~UF-+Mr#==*_+l4~>#3w7%u`U{^vFu(1z+*V`x7Nfy!eZ?CV z^jT!)T19%*&yB8I(R`2<)8Kg&XbiM zu0jN_?H%5jvSi7AIHJ=s7R57?uO`6TcO=+#zHt|X&pvO{t6)VYHg4Cqwfs%1jA--o z9}esiqD0{NsioRkjpnQeJ&o~lk6E|v@Df=6&0D2_;QEo^D`m z*~<8UsborkQs*l5d?%pEZUCX{?0y3I2lBBK!{l_X|=D?OD=QJlxB zsdui{f2huO&P487_EhrorkeUz^(mR;Bc1O>4}(B=w$Ex)1(^g+unYZQo%w*a@@Rsk`{0CIS8uN>5t zas$48Jl_~N(aE-Gm_#+`F}@ zksr$_{R{`|>B;FFJ7m+;s76nng~E?{EagvI(!$Kx65=vRi4Xt|vWBnMWO*72|d)orZ0<=Bq{PT#krD^|xcGWK;_03l%;-1_tZDweL<{I$%p3 zSNth{zgy4hpQh4QZ!dg2hI_MKwkZTp?R61tyze&n{h?|#8OWJGhP=*PvR-`+)*iDw zv%EK=s${H0MX3w4Srg~JI~+VS`Sz*3+@^$(3q2lpJhpUr&8DouPBC8|8Ir%Ahh5ou zge>_S`YZK=oa<*SAG1xd#X=hv?WZ#ZTg=VO#(1t|%wPTt>v^BD__!}P>BENTC}4Ny z?!5+Ba?T$|Yc_f$HnZ2HHNxQJ`J;t)*(y9v5|dAwy|Lk@<CN>UK09 zo@G7Sh}7FG6oi(`VgsT)>#UsQz_{xHy&NJT|QVba^$l+V-08{LiZh{ zQ1FTv%5$-*r!J9o*;AP1+TEr>DCvT<0!t@+VdDu}fOD8%Ien}Yb6OpT&3wpoJ$p>Y zI=r6kc4}Blc=^LyaRjmQx$t-Cn4*UN=(C^u^6d6oZwBg4qLFuaj+vV3|9X2$!3tP) z`@O5(B6Z4bm(pv$=snN3va({BNi^QzqX*ojI*exw-o>B!z)oJJ)`H?{>PWq${j_Ow z^Xz3VlNljO_--SnD`VX2AdQ42QF7*#e-(DCDJ1@#;FlG#Z^v!h%W846+zssPxpVgR z`X-`nMf6cG05Z2yzv2bsNGp8Ve*et6R*zm;Y~6OCd&Z{0&HA+NvBq8_ z?entN*8W9<0_lqHm&ff?W;)=z$l>Z;bPQplmDbG~0SZ z{(_SSdGK+asM$D77{-Qr45$(MXOWJOJ6w~mT`x9Rf|%P`H@hGJy~AryW79n(U6bN? zpjL#eXQSC(UAn28`PH=gFw+qAe57b8Dtv4%#4|of7S)u~;yp$!>tJ_pL@N!#mz}W-|dN)%}Dp z>tH~p#k*JlL6muP6klF2z#e+E|%rGSB6itI-)wVSPYF-Uk3DVFyLN zZg8FrM4)5wEhY^PNDR)EcfR}^j{P66?XogP6cGtEn7&1D`r{sH)!=I4Z$;CGP1#ul zfZLoH`@1NG{%y>nx&)L{JI2Q9IR4VZko7$0bCtd)u$Q9r=%dVN81zjWLNGP45$a?@ z>tvMmV8g&y0a6D@RPzZ4`dV>wzVV-&kG&j7nq??PrOB&VH`U)TC@{A5{2xl*0@s8> zNQ@7^|Aej*8JDf_(ER=X$S@hRoor$#08cW`6#N=rQZs>+gYt>{6(D!z7-wk1J`7jq zGFlBWh3EbcD1WCR`f6tVtzk*y)eoP*SboY;99<08@IP!U9*8BT@Nr9dNh*JJSLh#~ z4iJa8{#G%E8<+ZHs2VSh$aw3206QRNvA0-%xVqHXnsoHc@_%%ijE@Vu{&lLnBGUhH f>qffG7kGJsHk-zQhlST)D*|LB6(!2W4E+BOF9}}t literal 0 HcmV?d00001 diff --git a/Messaging/src/Tutorials/img/tutorials/intro/exchange-declare.png b/Messaging/src/Tutorials/img/tutorials/intro/exchange-declare.png new file mode 100644 index 0000000000000000000000000000000000000000..864a7afc6f72f687eea9bc0dc489ddc2e61a5c3f GIT binary patch literal 38380 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 B!ueDyu4RH{0uu1cr7 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ŻD6p_-4>v`ng;qMQlfDouvk{KTYbm;a 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

XOo`X?aF zGO`Ap1rk78OZ}Y|CA|JyE!b^()C-k=&fM_f5Z-yE2A*}52{Zehf6SUuQF2R9%UdIo z%6PyRy4tDFcZEf0x)?nXHJO&AoGH1g?}}n!dh!9H{D9(n3i6C{P`mFHhcP7gsTf6Q z91@*J`v&}CQD4#Ec@U_v`h9b!b505mXp zHg;VU&C>_X{YIpCPu%LAvcEC@n=*?~mhz?)AUPt#kQP`+=d<5!x` z`H-wRaKP=zDb&HrHtRmKZ`>Q@Kmmdp?S=I?Po{3escr=G*hOIjqQc-B2>o78%PTn%+jm ze|cZN*#P$b>SBnTRi)xbEE$yJk5dNBaCTR*GSg+!OOt|>acHGK{sbbRb>#v%{8Mm3 zP7BLVTdMs~I=mi>U;izMC|?iSqYByu$qC29KdbR$S|1qY3sbC*P};&*XB-J4ff~;qhEi7 z2%LX41aBHv4$i28%F2K!k)M1h{T_*eLW((u9>WH>9_(6L1_P{4mc4;@;CQ9-e@q~L z4>>^XyTesOmD>+FHvJQIIa;YfF9vHw^90@?*yd+!zf*}AT z0v&)*uEo1juNF$_fuY#_Z%US_+xWfO=0l)z`M-B}cY8jyd5h%RBJW+wNR>ps>vXfN zdDWaAX7g}?-p)Z}7Hgp+383c?)fb7yP=lG9RAhk`md7{FzmLZDPIWj{DsDJB~Dpyy(GCbZ7 z0I&eCfTkhgR9o6uLU}jwyEM};ADx=|e$NND)5604CzO?&23t4d$Ti}~ah|w^E_Kh< zoQX|tD@;$!uep;K2RC?rn-3SDl@qO@S7kEnWBCk8G)r~p(_?4sag{yM=FokA9uX9eoxr?vmDfg&cx7F#OjzmM?X3F0K`_{U=AmhlFiagT=q&?|PWw z9B4$7F1ug5=>G(?YRU2m4B4h#!w#si1U$PKPbwtxM)g?1 zs}7IHh*tRf{8E9ldIc9zm>bK1h?JrYjtCw-AGEC5ag)!GP|hS~KQX9eEa+{if(YH%wvhjPD210> z>v>c6n^DSJi@d52;b+g%zlHYPe0O0A?MB{)kKbXJLQ5+AC#%m*Nhsw0=oMeYdZjVA zTh|1iPO52ywHHm^W~lt}`1s(LeA}S%roa1YSrPbu81jnb*28#-Ac8}7y*srwms9r^ z9^C#n<6scC=ACpLzi6u+CNh3)jG_pf^4*lD*P%e+hlAzoT-dVy3?K5s&*}L($su<5 zPk$EBv$U6Af}aer1t}6eZbZg^|EJ{5mjYSLsCI>54W6?ukpM&aA(gF%BM zB*ed>5Fi#QxqU>$oq{B=2H?=;=S=^#X~6-DQWJLs$U*Of)~YlM=`R-(NZRZPiC0GZ zH!);+dGbi3G(N7Dc!b*{rAA&_EAQTZj7x#~uc?kNJ!Y{up>T4xbU=hmW&6#x^MVp{^xCa245BhMaAzxn)8ts>LoJc*+!?VEsDOd6?}edO z4IEk-ShO)=Gw2j#9oR@iNcqovXCb8(N(By1q3@CqU+Sf)r`uobE#zB1UQP*7hOhlG zV(P&fMK~ovpL~7-Dp-~ZvP{fLx0yaF;BonhlleqOZ4SBA`Cy*gU7UO&L^cf5TW1Fq z#(1^uwDpKn@@>3%6^5zhr1A?1!9lR)WN7+y7mv63-(HmJjb^K>>c7o!(#99}QQ)qXd&nzp%ZV;p#PiCl-LR3eJWS1}2g?kMwea%VN1iXIOl~ z2`Z0TW*dJq7+{Eri->MwHlh^T*TrkD1F^4NL_lwIsjKSf;w-;E#LMe; z-|YUoWQvE8ta&=gnOQReDT16H!nh7G%ZgO|1_4RE<{O-mVGw9g?x$f#&^<>Xx-*>| zbTFO?vcQ}+8!W95WrDror-d^vs*#kUB@p-(n#?He3=$WUr1ft@eX)Go-vrqhZ#OdV zXJ$WEu;8FOWT~5QwSHhpNOgK@Ibq&d!=*+IIbgw7H-#mptAG}|}vlYTsBhP~kcN6E#L_bor-UzWEaKuZ4;9~L_bxGM=uqiF~rVvzC zq$I}SB=ltplF~WTW3@y8bpZMYxF{)V9d zUjB@o!ghj$TQ~Z*FPafw?8zFkkafJ=lV4;H+ znYY^Q7Z?v+mmx?St|HA?Jo*OYw4COR0cpN^vjZsks8!Du!(!fC=Yqf6ncCJUmGb`8 z8MX;KZqv*_(rJ@oy*{EOr!@T+O)mk||#;`4=oM)UFc7IRl)Sywl2A*$ns1hhTlfv>v{RH?8S1l{TMnWJDV^5Kg;@%ksG+ z?KVDnJ<#1&lU;Aod&tfF*xRc zNlP}sLTf^*Fm@~4+4MFr1;5WGXgBq+4n|;G?v*NpV?e_irznN!H1)Cneu6h7LWnZN z$7NE+-4C*qZ%O%p-HVW)pv))a_J%y&&qFuX+PhHK58B84|l@;&xCf(^8bm5Yl0vB1#k!*91#Zx=l>* z?T?NCs#&E!SPj5%W9hbpNR0u?;?P~f+T)l$@^8yk@nd5%5061#E}IV&!2f~r##6j* zw{BQ~qqPt$NI9xKCIoCF05=@Vn#~_Be+~>)Ly}q0UBSjS=&TGyO}hyx1XEOK3={ww zA3*jwV4WvQLuwbc=KwMQE=emZFGQGC1`SFy2*~&cis7R0t2f^KzsNoa8Cv|OA6rEv zJ+@<}*;oS=d&+a){<8!JBXH`|jQPc@-7sK_9jsSLZ&h*bE{(5`=xxMj$ zF_1VL0;vNhBsw`BbmCiFEQ@5UC@e?@y3}eX3&>nDun^SZT8t+`_2k4sqO7$|7xWbl zu?G8q0P`VRTqBo~sxU$ysTd!RO0yYC$>d_b{B5R2cNLGz z1-;$;gdR3IC?P3cC>j8uY_M@>>p7qAPHVfpdx0K@Xv^iNb-WG#$t{|SQ_^HXns;r9 zA);MP2-`sHc@q<=*#$0yye4>$%VE9TNHu79=RZT;%P?e%pwV@-`N0?d3Bgul{qrsF zKzzZYz_LCM;|2Y@cPklv(aa_79sk<@+7)my^m4M4j0JY#Tq-4IH&N=D-Fs6@aL{Ta z00a7{(L)U(Xfc2_$q5nLS0&@Vj0bz-U*i!z0YbTuWa2LNSQ$7I0E&$Chze zGtDh(zGAZ2p~e%{r^SZUOhKZJL`H-N=hsiGV>;x5!ypp#b$_ikIy`S@hlYZLpjt5# z;o^E7L7G+|&>$QHv;4Do-452QJ3q%k8%yQge6%8247*mIQ_S;AvcC zqdWYbRW<#PP&>HXZH;eD=CO-D+m8PVK`U-73#&?u`ZfLP0^XtwaCt;sIJlfvxu0S) zGNYb*{Jsz8KM$P;OT&KxgPs~+Hz6aA!4v#jDN7qYOFdTyG1t?vs4yoOQbOy3|1p6| zQYy+b%0OQNSSVuQ0QS>~&~WUf3G0aYBVv0mY{cG-__T5NLU1WTtQd3XAmnrtwi66BoirLlf#&x}QuA@duhzp8cUer^{-5tHj{AH6Q)XhNxM&};9Kn}l zfA3Y;GQPi$j{FtajokFGDo#Z`p9h*D;!Q`fM9KCWjhn#WSF6zf;OVg`F=vD1Y4KkE zwZ2o;eIVhl?>sf^aI2%a#lnUL*U{uOq$7sy(^R>SfjTmYl<|m5Z3YKz^R)>xmwJ8H zG*tl1QrH?z*@|y!3UNEL)Mb&Eo>=e(Z${6R;t=$E_L~M2fGMl@xc`+t+6IelUDPdg z1;0D!5-MzjU`VsTIZ^6kF8O4Bzpm@#TJ?yE1N7gl4P+rvmddl*vbZ5eia$?!@k61p z?|)zUlJ_Zn2kMgp$dXjLj=5)n+ds#1;KIIoWClFF;bVSRgduZq%K0qDQZMB5L`ZN2 zXw}_?U*l|GnjlGtn8^VQ(gr_U8`)FcoyH903@e~?s(GvP0@93^NJUO?jmd44`{4BH zG4ClPh8C~;zXkQN$m~7=czXe?e9*x9_&NGpO)0QpRyLLKXMZRdP$B%F)Jc@xZ|{uM zN~hAs({S;eBHw+4*ZMF8UG_!PRFM<_;l9&%It&P;=#AkvaGLu&g-;5|9~XMbT9vi; zGiUFaLHtI^hMN!FQ3$xnxk#py9k^Md{h{05{Z8+$zyCjhM4Q1Yp!u*q7b|srwZ5dV z<=fw$kC}foI;mU6%o(LP)9Q(J`^y)x(4^*Y05n#I!}yt{{(M*UO7H+gIHfs>`&$AY zR6Ziw?;rDORugbA!HXZGKm5kUl2)NDy4VBt~s102t63 zRE7{wj5LrDhpaSXf7Hw@=#b?@TP6i5#x1Sk&b5}Gro63XG&>IkbS~hd%0q%Yru6j4z4`Hd(>^@9| z3Z9|R#P>neBZ@C*4?IFgitx`B$8iZLkxN!lviaS`~akO@qkutFVvb}YC8G4C0B&G}DHxADlMyj8Q0 zeBs-~TOXbd?}&_<8eqZJOCxYEdXb=xsea(D(SD-ARTi4^dnW`j-KMX!WDLxV(nqSZ zMz5I#iUU-G5sn8dBz|-9Rtr{+Kc7zFh^iA6lNCmz?6W)~KrME8v81_Pb6RS3YbL{6 zCuJkgJ-6^NtrfjomgemZ-q19?6-Wm$hZdjw`)qXIx>jB|Ch_lLujg++ z4%Pqq6@e23C(jpwKwjW-90ZxtAG4SJu2ch+Lqlo|^*bWqS23xIcp1DPe5b4|mt8&o z?c2wbUpISw;Oln8QXv>Kew>h(=&!B)fw;Q+3JVENC2%G9ZU-BjSXa zfEUYjG@=3YuW3qdA}hg0O1N@YyMJjnm=8`>oJW=O$oY)PPjYJhzWn00TU)5o<4-^Y zI+{TfaKvuaHkqLt6G+sr&l)fV(k-v@TsO$Kk&o`;_%;%ei zEiY?#i{htS9TC3VzSZk}WpA{eypN98R-qZflPsOP*$M%8uZwWJJpytE>yp`+w9}lo#4_u zr?2N58@m79zrg}^>pZ;ogc_(P1Jiulsf>o8FAp|!bDkOpVMnaZOWPkYbwkHR)oJhrNC4VmN>ph)(#9s`Sm zV8pMQ><*HoA)+Y<^F5?4rm1h<97OVX1uuR0_jLD(X-R=G46zGnF;$kw8^DnnD`%tT z8VxzA)pq;sWS`O^VdWqI;2+8|d)P5vf6#FAQ}ZOPR&9?um8hcJJiQu>VO|)w9khwi z$cuOQgP#4=)%hkX%+3d^>lgjAz$x#3`Hfro2l@bY4D9ZjS5lFKYYf=v4p!FIpw_>? zn7tHMAOSOt=NX4<&E@&Y&B1@&1E|+j>El?{7gbM>O09aGE#ACS{&fp3Ca;K2;~vXc ziVa^N3{}z}V+kH(jUz^6TgWzNF+E>5tJ>s(oRLt4it- z&n=-V)PV_rL@|M|sr${~fpilQ+CT0zUfOp*jHqvIV5U~svV!JaM)e!6(8dOafJgGX z)?gP~is3OjP-G}8MimK9wPH@{x=l)QM3Am0t16~x9SdVJH;M|e=(+5Dnf?o|2WD@Q z5XRgBdUhhunH5G#%8qa{e1KA;#!b#;N}MifL^<_}5~FH)id71jHFNDa`_K##Aw$kqHZ+MiKrEEw`^wYoYR%n3XqiDcH#m2=kcxhT{ z7fa#cg6cla!@0(A=WhS%c_xWoy@h4F<+J)*ff;vSeqoi~hQE~~R^t*@e@pq@SZzQ? z4(r@zUhZCGzKOd!d<2B62?Ip!q3&u`{cjzGR9oS51K)-x(^^%LmOTOMEKOBHy+9c9 z#8JduD5KCJT*x3YZ;rGDjERdHfK3GjDK_i`Ryb1&=86Cbl+eR z$(Jl1zg-Psm`5q+K8&!=Gc5w!-SP9Z&l{32|LOG}5>tu7@2U9X=HM#Uv(CEPqO^Y) z^cFQD02T;0mJ<`A)YdOt{aw;ZMI`3QFO?MIlB1uMw?3*Y+(p=g`#XM(vjk;-y!`WxK(*A`|?6b zjHh05WPhLfsNi#wfnZne{bufPKO4mDFK|Db!)`#-QuEPbf7zN)PX&Q7%Q2fI2pKjC zbrnH9rYsi`;lq9nL_?F~faqb7pC5RC{!McBa$H;#!5EyNYT^pGdiKewaS&$>YR|%e z9LbR`ADR7LMmvtw%X8aL5S&>&(3aqh^lJU82%7LdjWM$CV!wZYvm1JF?w!}s$4f`M zR5!^))w}9<3>CH73VOZpJkHh}^3ap{x#hp@P@rb?`-=hI?a>$2oa02abLHWVnk&N3 zm=CeroC`fcmGW8Nqdoay%z&Q2P}EP~p_^FZGMsG-#dtf>?@T{N#xmRWAQiPd0;>ZG z!0+7TJsHb=8A}uF+-nP8rMv!$sJ8NNUS;i)0%Au#moq&PZ^;JlJS~ew6>aJDxt6Pi z@}W{d!`^9ghR`;>*F{I~*g-(nnp;tWUW3K*Nj4yve^Dnpt)*>#r;0gR+I9=y92+QN z0$Al&a6i@kj(lF#a60{bo>PdVzj0)hTxOkImhmxBmz7n(EXm>?4SxRhs=1xR=WE-? zpv4QLa@I|OeIy)@S+|#bhuc17e~0IPZxhn-sT2N1i_p^hdHd&DpK+?tkze9M&5&O? z%G=&1j601QpZW)nvO`VJ=kX*b|5C%DEEYDlSAV~RYmmuGQ#4@&{8|i*to}S{0$emi z&u*#fnu5)1-(IEOqk@%_dw3MyFpOOeKUgJN75m_=H@m-0MAzxqGTA%P>zwktm%DW1 zOgekZ46?A8^1y_7=l8z+2VIz{m#LJX`Z5uZJio04`RLQ(ciXbrzjogV-L1#o)$857 z;P%8>iw%Y6D!N#W5Ev4xTZ~M_?J5KN9XPTeAdbQab!@8I#M;?y}Qd2+;k_HIS zi$SccrX}SRNLqDaD5eE%Uk)q4c!@}?b+FCVX?m#Z{%g%kMURob$>#Dw&%0T$;kKut z)E)&NSV)cZx!iMdyzK5-ZqTU(jEFskznZKHsznxH+C*J$cyszO)Cw*%eIDC2>{20n z>K_LIIY24f%)ihgEKssJIjhcg))zS0iTxEVrTq+Zb*b2lyKp^vzX?u|31DJLZZCbC zO(*NC+M17k*)P*`=9zp01XR)e`r=8Td6R+x;-7xu&ZQrHk%o&vAZFYuca@I#N5(YI zcU|-!m4^fOK~JAq_6L*qE^VfgSN5~TGy`vAVg>*Wy-DkUTl%JKNNXOSZ%?W0`I-Nl)v(Drg? zIfq0ds}Vxy5R13nF01kF!)$7DH$1owD8N5_$N?q^}3^#6->v-DohL zy};W*Lg*K_W;+PLG09(_IW}TB%oxPIYK4hbk@aA7Q)nn2Ha0f#z3VU>oOoSQILH9j zLG@Q{&2yW{Ad?T0?c2&vCFIx{3{}0wL~G7J?{7MaLY@~BCq#jye~ve`OKxQ&`OBR3 zTI@HE=em*st}6~_hAf3YvWpym@VQXJDF6TnagnC`;AyWZ9!`%r`9=YO z{jn0*F}V=C+u^g`)q<`-RuRp{lPYV@i83sY^z-_(V9lwm^d=9peHKV4ft;xaGl0aOe#@ooY7s^KLMpc1qd7D*bn8m$yS8EV zZ`z+wAi^ox00gbZm=u05yq?0*j?3ZotN3H8ofQ&}t=V2gj5@E0VY2^|~#DX4B z#9g`zIRq#$wuWM10p$6rND$ZjNy|XF>fH?@1F*1d#(-B1paK9QK1r}3CK-_t&!q`g z;;iNn7H<_U6Qo%n7|HxC2@}U))Ls70LJZXXGEH69*1WktYf^W&r1+}%a+5m6xK%q! zOMf+>ezevVHQaV70$8}rd2OzK9SDX$=59QP*EvDfez?GCFOkpC>70+=TvR!gv7t>R zh^c6)yM~^Fm9dX%!4NafN;x2B`2>l+zO(*Bw~O71c-nDq&9-%(YrBajINN^9Z>$FWf18J+?TJtTAQpf%u+CkL zqyr!3Ufajt4%w^%gViJd$tTiP9=iQwRs(e|U@l2gF(M!u!g;v@%TsT7Bu6kU{^0dV za(g3l{DDc7LS#6mg)$<|JD)*P6Rnp+qMM9F&zE#t*nfLfM}@ozSwTATJ(gmIoSa-H z3h|&r5|E@H^_7^#sEX7EpQ)<^wR)=th2eXR<+r$J?oPpf@ig2wq&$k|;%fFvB<9`k zo^Elyk&Ty|kBreLX)t+E0({r?g4CFPg7>3~EG@E~Qi2F>0#|D%CR9i3?^6^QyY{YM zN}7&fR!MwY2P2~C$6nvssyNDtU`yOA#woqg?vyw!?Sv|$(S|Vk(EGlIQpEuY z$`4^cP4nU;VA(~GtJa9pJsR7~ztR>5+!79vnlo``1vEbmO;W3L+&r6gJ1iWXaFi zmp9oTrHfrd(@8Uu;^Ik|SgaPxLAI9QwXmYf0o>|qelb&4XaL;p>q$>$-Sz5Y??M0| zN1Kg(R$U1iz=@3ZeNf?Y%DYXXJGvPFFdQHt2>bmlGbFw~P5@(LWniQk0d{oChP{%R}j>|PK zPHf8&j`2rvooN=`XqLDTn4TUh9y>p)v>Qvo#e{l0Vyg^B7P$S`7c4`9A%)^m#n*D4 zSgtF3JQcEH%~$`GO3B7n*U%zGYigrXtUhWeACrP2{gBd^0$yvn)`)t}FZ9nxnUsxd z=@in?Hj3FYdq6Po@#iyeUE;~12B8Y9PnWO z(cp?n-O?a>2GoI%rC!MG?5!XG$od_DV5^R zi8xxMRgA2qt%iw(=L&xQT+&G+w)t0-@_($jGJlI5b>hU;OGwnI*-M=3T$lGRonRhm z6wvZIl4E(AuU#e{g&CR9Ug7;-d(%-szB@DIn~6XU6VnP2E0Drjt@&kpt*iNCT*q!L zC~FT|kuf82A7>R7z|T!q<#U6DA@RFt1+e%htpuQDn^fs3jfQfAor~W^tB^AipCJPXjZTuL$j`s zD&B@APK%O3pnx6LzS2ZCI?DP|y(WF0w2%n)+uw-VNjjqYo&#SYit9lbc<%1y7aMc;>Lo-9+oCK%ROxL7@Y)R}zA z$C~vwqJ%eG28!l4v?`3YzK<0el!K+pL@z3Xc_ydoHej(83?xMNwt=p$u9}*fl9I!2 zUueC>^uzi3W2z6YDCmg!>N4we`+*CW3f%U#n`ad4E#1G?-`t zujjO1i+-+Vh6S{IUh7l5EXv0&2e1YNS(z9R)PuHO&hlsF`wx(n{zS^{&JNMB>r8gM zUTaf9V|^*nbRExT--QTeyC6hLIyiWK{AUz*{L9{*n=sE~|LBjN-GVV39 zJe{JbO2N!gsH}*LJ_QOAEhVucVWdTl1f+x4+y@TRd$3G_ZVS(@vW#wa(G=nX_gs6gCei0zg-e;?60lccfZ%^-{55m`}=`!l&!5T_+E*Nhb*5ix^5mg(Tz=;642s_ zg8at}N{J7wye#fUei?BqpuU(OXiPAVt!?}<3f&bNR_IE^qnO z?S!+|lh{AM+#(W~34H$e0g?ko6AGGbobemV#cCGY-i=n*F}gxrKcVv1kvi*sdpy-M z=gja#3JT0+!qqqh+HdUW-OD+jx}HdEZU}bhvF{HQ1U2hm`m$1coWb%rXvP;vOmr%_ z&1gRCukKCTmvYwXC2!|p0rLE^8&tz@&Ty0e;3hp@PwaY7@*$_q-;4nH!T1bfBa8fi z$bbg(ddRxO6l9yxIU3kX@YNqntNTTT7yT;eMbmmHV2YryM@Tz>v~ zXM0?P1EfeaB`Yo68Z-@(kpvCoMwLr`(fp-he!W_Ewkn~sWt34sQ`}-x%rbe<0Szes zhX#;~s8Dm<`9lB`W83a(BWi8;Y+>UCBXsYfdzba2Q-3_y_Y;GtuyRy508nvO?{9Z@ z_p-UDc?=MJCcR8-8dNJ~GGVJeCS+MeGutB7fWY1b@Y*uMZRWD)wUE#;9W}(Q> z8E{tO^wG$RlBoSlCPkM>&%hdM)g=t2#OaCsmg0Joov@!rMZfkTYcTi~tZp5{NPU?ro7;mAxZ#nr{(3Ltg@JuvMfZoc!l$YQZVPbp($|&gHZ1Y;|p2@Tzbo z&6~K@#SZIyT@hqcP5`sz&MiLX>|-#3$q4KZb{I?Ke92G<^7>@R`b|n@xx6L`D2ye_ z2_PNXQ_l~E+#FDHnupzwq;?Lgy0P9*_8_voERmFcV6e^sh*FzY{=lfN=2 zrr0@mpHDfLua8*vEjej>Rr;Bw)>47&zH8ceq>nG$X_>!5MVU!4AJb z0dbOwn29shybLds8n}u?8B@+ToXg7Ojy$%68dIo zW8+?Id5JlPbkruU%1CWzba= zOZGN8!y|Z2rQ7?}W@9#=?rI4vxcX^93PMIx@314j*S&QhwQu!bZ%8|a+0Je(3`*+rqK>SX#GMR32^Kz(>f%L2ohIEqe4va zlT6QX@bULnK1A%05{u|fb#p98OE)V}hm4G2O%zx&8jFVdq=eBo!wskJt*y~+znCaS#74D6!(AA+Tb$maouctZ2y%0MK>beCL6CF^Cph9 zuSPTq2X+4Hx>X+@jpsz*CrLm}kA#$7ET+LUX|#DC{2QI&*^q}?8lO$k2(Q%nxADyu zEQr3hCM5h`b0_*~bY-KIB0T2c{CuPJ7Rygl%z{f)_s5@Ecq5{m7~;fAZh}K$CqDn@ zw*;ch$%3zOLT@)qqmGO&3R#ffX1O3q$8|b=S$kS8lJl=tlEA{|i30J;A00j+ujz?b z>>NJ-Celj>BkS7;QRcHj%Dv#rxU*$NOt}nU@)fMidih z-~iuNY4gIXx$Sh*I&1RU-n-rKo<>{OOpsN+TqT%Qf?8f#cdMdJ>QsN+%NX0|<^}s` zvD}1;>T>-2Cxm(RIVX!Ul!n=~>}vJ)`;yDY`nkyC-lF|FQGBBi86dA!t(c<=LzFkIPe)Qy3C)%g1f(saew=IR>UVUhowgq=X~K zJ0yGPJ{ty2orAoHsa#`}wP}Wk*@U=Zz}p2$x;lQZ2sJ6LNipFIX#pZ_0~~;qZTvd~ zk!yT}PZ2gd8uIre!~aLuR|mxrHhnJc7HomwL4q#s?he7--QC??gS)%CLxMX52oT(Z zLvXuI-uLdls;k?b;;*fmVdj~qyMNOCD8L+sj8_-s@WgNXV6>6#ZmxGVlJXZFU4bLm zQU2B`8%30SX60fpwJ{L1k0gC(#~~9{qvYZA#nj?KRh-br`;M=ZfD%RaI^ZICxlORH zx95W{K+$XK=LvxCo&V@p0Trs>65&#f*Xd2(X)DL}IDq+V;M60SaLphfUwk-(%^HU< zKaXcjx$~+6Y=)ya(PKtZm=EmA#A9{X3ai6OeUceMmbP|jVbx+MbbnzcGsx>u8!3#m zfCL!x3IkFppu)I`9ju`n6vFyLdYZol58$Q6w{lx|QX#7r^?q%NO#c};dsqNCmz=e_iTsIUlcl4wr zcn0qaq=3}dtng>IGjA6TS)$ZECJb4P_bcvz$w>E4BbC)^uU0vL{&)jOlA9bxE`6+& zDU+owLeGW6=0S`$`%x^px||QLyRM1L?t?F?FiopC4EP^8>!V`y>*SM?lDOT^yN#xi z`Tc_O(wW&5Ynd@l$1tugAUBPN@(P&3%{*DKi_NIVq7Et$!@zK30&v&0Je3`9MOY4;-K^6kUZUrv-I`F&$k z_)`sC`sFZ;Vdkw%i5^;TRJ+HOssDAo5)x8yZU@i0!1dl5vt=u>$ll-M_ll-F(Tm$& zF%3aiOJ2KyKOi9x0Uh}XF*vS@Sp(0^@N?{>)r3iAY1v}z?>YKz5t-dThmZDc)Gw#g z{c{(`{knXtmh;7auU;qoS#XWnvk50{hB?BMcvZrHW->VBenF6|Nen6I+ulhhJ)z>A zNMX;~HJWAnrw{0*$8_N?q8PJxPV63B=*eTKCbBv)IPS-f?ZwDu| zv;m5l-dnx5ptsj%jga~D-^70Yd2P}z)v&vI1YF+RlW2WB%Tx`6!=AKSeDxRr0KV_7 zZ+vZw3dV4KHNGqWra#3mr4W#8iA`&XO%vK;u`@G8ujhsfs>@{(wx5kZRsyrh9+bS# zvKMb{x(hXF9CWe`hYHMk1rrOJG{&PaA!NLGa>su8psqNf#3flo~UoCHu}Y z%e(jW%VKnB?|yRMtdyE+0^B*Gxte{%s^Hk&p0w-Ix+H9$_Nwe^C|!PM^8c}4Mwy90 zH;$~4VH{m@!I@Vb(CIAmgHm{f4NL}SnFp!Wz5_W+x--B6)vu_p_QSp7C$t6TBz)betsR7h`0l%_QLP-E3CuL>3L6h z=c_HnkCUI|pWibW2ny8e7>R9<3};z=w~q1Z_&QjqRa|7p+S`L+lv)OGxt# zO6eRlF;{?qLJ$`{Bp{=D%y9aHR0>KmY*0`ErE#iNf+Ktt&2p41D1mZzJ{ZEJ3MQ?0 z@H7xY!n1**=Cg}8n%v>b;!jsrHK@I!a?dzDBUUh z&rqw(bgA@Vy(KNOfv;*rL2|i`!K4*fYLH^#%ijDlHcOKr3V{A5sxS2ROFhrW`8U?^ zPgNJyf~E|T+Fu62JMz8!jTcmj-_)Ag*?U_ie5}*H5>9=~$Cwu%P@?_y{DpGzF&*XM z&y`eO(?L@c$!p*VP4MUQz zsXCYUcz%hNqIGZ0X}T|1lFY+c>am#^IcpNPzsFK~dLMfb4}KkO-Xg%hf?w@VM1&mj zx6e3o{uxYbA0yS<(nn?aNe9ne;2Yp}hr${SA#&)`rZ*5Zn@5Wmixz1~CqC^HWuv5; zNpc3>>x{mRD*xQ7BPpbiMla(B{khu~0Z(l7bzKjct&l}m=e1Hnv45s295FeeC%z}< z$?LPx8=ICBZq!l-}cuo8#ka=`^?(+alnHyhEI7B}h7q{Nv^$<%$7E4fj zC=|^GynS-ak)JQ`Ep4i)!dTu?xyP;Y@FSGVR&Bz9f-3H0*7IVQvb+6bE&)A0eCgOO zq7y<|;^zi-p2@Ta_HF^lL_^61;|O%@8WhTS%>2lsQ(urt1lf-!h@8Q}5725{#pQW| zSDxrsHyO#;efERSGrG1TiB`DqJCz9RT7q-lAH)KRadK1$sN- z@l!9COu+ZwvuhvN0GyiWynl9Azi$`nH6D@&^ZS8T$Pcdb`6?x3CtSLN`oTc*rw+`d zm_f+*4clHW;wo$cFqWtLnFADBtKx5K^`rdioQLHC$Z|SFu_+-w!ab}IypwKM3K~wv zmhClqPRWdWR3;TshY&_0+J}t4d!TlCNF0y+QhJ6F324>ZE(cpv+^t znyqc^^Bj0G?dzNC?{xptyN<6S37+ZuY+s4kizMUzt^C<*Yuizq|H#i|_&L^#9>yX? zv*hS@+j`p`3K5kr_tq|Lh;fRjk8U%He+{Q=$1N#z>5Id9fR(6AO`bVAPI0(%M!9$*zAzL#PD_=#q@)jAq{0uBR}TOTJH++(U6Teo*^0h)5OS;@zy9^}sH1f7tDH5rDSg%|S}KO~V`X3H-FJP}nVq zdJNyoN%bZEXc}03hM~p9d8?;!_}$+ASp+(yzFoTBXFL0}uyg7p_FSC@6<~Mf>dOW* zNUjATJHrpRWw}av6TH9Mh=Z2N)?#Uu-bDkb=B+;oO7+u?mIBmW&^7ZB*LY$c0WXZ# z9;Aw>{94ph+?}jU+D^#2+=MpWVJ_V1bT~ov@78)j;xE{qjyvB=Zx<*xIm+qKx5Qur z3i~huuAV*GEoefjl>p%@ESaUw>>;M(-ydA4G3P*dg{(%xUBOhvZV;ZoA&|LhwQz*5 zTg8ys=;!v;f^|opwe{nPB2)=VoH0s(fTtU~ z2S#i*r&SjfPP0LU0fRsi8f2_tfFJ}kfWPI7DY8kSP~tHRMKk#T)6ION*@t;76XW8q z^;^oHs;#79V@5#j^vRmN?2vLHK{w_S&9dpB?Z**f;`inMKf?NY`V$F^6A6Xr&Bohb z*=J#lYHwG50Xr3nhSa(IPyY;`E*z3{%RLusVccPR&9trQXZ1KfT`R}d+CQ%v*JQyp z71nMhyLwo7tvr5?m+iSw_Ha8FQD{bmJ1jQZeStzy)`tV~7Ed?qWU}a4CZ8tmBLVV3 zOpyd4aLz?FG(m^c5BGat&o&RGPs`0?94ML#MDCUgtE;R1g2OyJxQNdt-8)!AA)rb@ zq^Kc^2Eyp&*FO}oyS@Z6QB&boKb|eI8*R1Fse%YqQM-8uQ}`DEgArr(dqK!fm;N)k z+*gxZCnNFR54l~#FZ<-s@1Z*RkYqt5!isSe@Um7Z2lBTD40-{e@m<; z2FWQ+f{`QA&>@AzZ359$DvL)gP3P&kJNL>p6My8m$>**Mp|#!D!#vv|gZ_Pp`kz27 z*UT6)eEG3Wj!~0;Mwedd@3U3I;&@dfh4eQHqUv}%)lNnJ{kF3N*X3TW_UFhB$lECX zNgpC)#@OI0oEBpBfao;)6cUiy=5}-T+N*&KNZ|Cmi#6s^ug{{aZik#v)-Z-`ugER+ z{=Ibbql$pnb-d4AXy6G~cZ>tPp*LG)xSTThtElQW9xW&pjqq|bpNPC?66kkSa-IO| zd|a{(=IK)E_FrJrxvE9?kHf=c^)78vQ*gVDFlcRxzqv;_=;3T+Et|@)3gsQZ&YT1k-t-V@Xglv}Yvc-|j ze)Q?`bt;&>zZ~va{!|?T*A4y;E3uc+lAK{4v_A0%jHy+$-zCdwXrE!6;>tvzMKf1ODPT&cWQBiS^Q`(^4 zSp^Yur@vC8z5NG<@PU$W$Ja3o-K|?h+%cFDvq#)%xeosbxCxxeEbShzTUx8JcSbAR z^28*P2z|dAC7qVK*dsm;tDkMv!V;TLUwhePCgS!G)h*W~2AIZ1Fmq7lSgbk={(MJL zAh!8qVAcuVR9LC*r2ysb_2%KYKV9>tS3I~2!A(J-8%(C#{nf1a*-9R*H!^4BR}@Ju zo~27SpQKg#YWODz=kFr0j6xxtRckQjDr{Bi^rBk(z_Uz(RyZEqr@t9|ChVF>Ww%{D zT}>q9_1(JYSv&pJox28dPDZtM3r3LT2I-mX`OMkChc`iLVainFNPoNPe4rWWj?6do z>)Cph=;Y|Ca9(S%?(G?D9`r|`AP1ADi_}VsJ!eGs&3L$@x(A!=HJskHJfva@l~rL9 zEBD^;{rOrqlhwfhc*WCWH-)uI-%3Y34EPj?PiFLZT6IU0g<{%IcV0*U0|#g0nOY&@ z!SZAO=jE31?qyuGPH;?J5m{3;2+*4F?vjm@ixQP^z&8c1dfr6jdwlDTUEsqz4*VAW z%CkwQd5h*A{N}a0ZKcBu{y!6b{`|?vugz>eoef9)QLD{!ZD5ybNVOap5XDFPL1Yj{ zo^~W5ZA+kg=Q0GEt3jBOS=MtcC%MIRsR=El>nmd_oz+Ss1tBgN#Du=$fg!+}%30$3 zf8{aM!>Hp*SVr_{(S)xKhgnrtFZ5{#u$=8y<`p>V1v3!@kZTuuEH?*3P?$!)^Z*b1 zCnk|pW?SEuAwKH(mSf3IzPVWI2|xWrZD<6`$l7@|i)yL^vHF2QU1q{2X>o~s-XQXc z`>WXA4!-{?WX_pQw)z8~ot?EfWIc<$o6z*Vc219zmwfvy!IT1MzdJHITx=|2Pz=qm z-Q+^(JI!}^THbn|=U55xULW5X|$YC zefB<+Wt^sV$?w2yDMZI6xZG8gL$r`*JI{*_Pad2}?c|IrvuFE3ZdI1x$XhoB+l<@c zmvROf4!v>@ul-By4?5_)H^Y1~aK1i;e=IhRyqA2M7I2#f5sZ#X*aoG=31!b|PyqR1 z5*}G*qW2edWulL5z3Boqj$`haF+oKxTMQh7gM+zwAj7rPDb?or@J_ajyLfN;kNniA zrN+=HAE8a3L5L9B4uPyflbx(0ba`i=Q+!N*OcO83b>E~$y8rU|#)jv~^&Eyq?58?a z{N~yQr}A48%%nv-n#KFCt(kh`SYD~#epjh+avjEMh`F(5>LY>kmEr&O=ZVEy9Rk^} zepz6Im6yj_>i}s=8r3xQblvy)_6AoZhmGf{EjnzMptowne(}^b-u-4j#@FC2ybB_K zdJnJ0zN^(ttgZwvJ*QYP-S{Y>Iy!|B9|rfu`+D5zzEYLtHU^`1Rd;WMoPm5gn~TNt z_YeQqlc`Fn3VQp~wNCB2^oJ-lj*xL--Hc*nn2fdrhJu|AOWeI62oGNS&DEJh-}imq zw#pcPmtV65BI|bdsttR|RpekKmH1XzTT~ zap7CfwW$a=9S1yX!zWv=+*ANa@-gUm>Noq``!sb5Iq*w4@T)`A3ya)3w(pFqq`Rv8Earj^cGXW!D2EhU zNY>5@-I+20ixe&P<9*m%C?1G>H!*sTPv(Id|{*DaEx?Np+lvKM@9Mm!XO zf)3M{2*ExadAWMNGmiIcv4w07lg0HSs5{R_B#NnNC!1N}LZuu;+jc+ouZHK8x_CcR zQ~zwXRJOA_-|&5QyO`qgIZCLTRaeo_&`~*Jq(?zQLqm#(M~jb$ijtO+s!*q5qyP6| zVObbb=&14>D>H!xD;}^RCHn5|bBH+GSN|q$)kQ<9&Ad5#rc&UJ4MQW`9O<5JFPE`x zou#sRS4XG80N0JD{Du0sue?6+LwCeGUUass?I)k?P#*V&pEr9hT22ZF+}j=3-6i~P z6xURV&G^;H?=9|4(qzAI!f6H;^#<}ld+~hlcZ{28T>&B-1iG&|pO*sm&nRASq#s=f#u-+~W)p2|5{_p_VDh;VBjTM`@ zW;&{}qbj9*v7=at-zZPa?$CrhJ62&y9MD29j0}8+SGlRiMdG$MZhjOAbq9<&+Aq8J z;%}N;46>=VA{wD{@h<0DEN{mOaJ=3!WT%=rNiV0n7pEJ}rN{tj=j#wQld{OuPK84s ze`zfdSdN+%W&|h_B!1OQ!4P@ITgZPLg4_om>6{b-K^gQCeMKw)5d56ltvCa2RCV3^axgR)w(z75 zD>#uqfJy_BP#d)CfL59Xxao#!YMpMTX}7u)Bh?jh5FOWgBRP8>mt*+%P~?FT9x!4l zxB$OLe{Y{kc-{S1gB&<}j^=KDWYjAd#nQIAH71qOu1Otl0Zr~V> zy(hdM8CxnwruptKe^&=WIT&#UWP8RsZR3_8G*S@HwOVZv0H;Av>Xc4#?3f5hrPQ_f z2;jp^slb0ze)AWRl}_b`M+j{VkMg?9Lj>*1Ofr~H6w)ajfGwh{zd(9#wFJXyUcyni zD(VPGXg$Yp@DHhzZWrB$~(2;myQSEmjHYj5+ul3PZNrY4N3{_Wtm z9=O;hfer%HA1q-Na|kX!B52t<1^*Tu6NI}qaerfDm%!Xk)lp=H)_&%sCFPW`DTK}^ z-0?_Qx->_@5gb4ixgi9ut1gYtd}*~S05BXAqiRj){M6gUEz=r$V?!?>XRi!+7!&P{;ThqUZxj9 zQLy|A^9gGyC%Is#a-Ub03065a3e|dv)l1Odo!SJf+%ujE+|dF0MW4Uj^|- z#v#s7m&>oHKn&ys*Wc`X{zH)JC7E7dGOLW(Fu()8`yriU2Ix2_3M57=29<$%oU(6hxAI(+AYu<145yJvlZAM@!-HB%+SyT{K*2UZ2iz{ zUCOiEfQrmqHICm01mAdCS>^q6-`%1IXU>s7zUHESyi)&q{D&5t`PKPiSN$K(%UFKy zPE(fYR_pV5X2oR53R~>bZ@Va5;V;;zhJdiekE9a>^b?eJ z-lBq~L+U?P)ex=czUO7Bcb_sC=3JH{M0(KTpq? zxwaN=(tLHAeSK%0zJ@6}8Y~KM2SYEhyNL~oUBOmu&EXJU3!rrAFKl%D%I$Dbczpto zsSndlCgSD2A8e)+lNo_kuq%U-_!}|dcV@zv4k{NnRI7S4T~_mM{kHEfJ`=_NRRk$z zRb;9_$C*hZ+x9gZA&&+Wlm~sE<(ANPmxL$?(Cq~*Z4{%VAharA8H4E67JJ0oL5&~U;pz0EhN;F zjI0~n4S8-(X{<&0%fj!nlEs38dH)6hhHLO$*pY^rLq63%-sGO*d@SlRYXrZ)u`!=7 zkWubr5xr}_4_!o&gcJ%(Uy) zDBicd7Msl-zZ_>w?ne?e1zSGl-JH;W{;b*Qatxk?*JL)u;eCI=W}lj#g7r1&Blt+u z;bEUViHi8~?b|QCIyDUqH4PQ;-ve5@i4}KBjtid+KYjW0$8~S{W}B5}-)Dv#ZdbeI z+Vz>%H_Z2*TuMxfAd-k^#<(b+M=$s5Tk(Op#@E z#;Cv%TC7zI^vIY7c?9xdHPsJOeF|ut4P@f^*`H1qE~tKsU;CSFDoGe@K>^buDMzAU ztp?9oseaeqa}&SIa+Up46u8uxBlzznzxP@I2RW6QTMBBak;MXM70M zQgb*%N-dvxg)Q1lBIG`Wd58)h-7R5a3gdIqlf%vB4}4t9|0Mt=3OkvjNPFEWpU7ty z(yz9eUEAx~Gk)hAXm-{$>5wFJ#Uy<^c5AlS$ zSL>Cev}qgcPjRVNSBdbWg2wrz)bKR9YAM@asbUHQ95EibLkZv zh>gDG8Z+K~e1rY>R0ZL|lrI};!D_J-CK4jzQFo6l$zOe=YB+w{$EC-|qprsF*pbw8 zfuuegp|NvYGbtrc5f~YCoyPD%W_L)3pJF_3u4>9!I12D-4nB=G1n2<4*a*}K8~pXY zIz66WeaDY4ma#HR@~lX4uVus|eXq7Xeu(M)zy*S0Fk1Lb=&wFB1nx)rrqN^;`;E7& z%^vS|c#pt(G0I%lIEoU-4;`s*@VoPyB7>J0Z#wL?t0;EE3v5lDlvbld|6#P3`D;4~ zea)TsMURA`&0mZe{k_W|_+XCUE*>BJ<2;yBwXUrb1tfnBY))6?Ap>}7`*9O#0g@|y z0DwM2N>oV2cgw}m!49x5n?386+N?$O@U6pK`FysyREY!t5_4XzC0wbIFzxcO*Sm zo6cpWAXQ8#HrI94u2wLz`F`#0^!D3CE-3 z#W^y+Fa^VB+g#SPTIWR&>Ww=@5-xERK9M9LL(_SRL&T0)t4O_$AkXKT7(6-mSQ?zm z!0-6u+c<=u;C(By(<=x4fOA-FjJ0$Cq)G@4jCVvid)d zcY-UoKYzTWB70FbQLKICK0rd2BLnr{0xbg&gUHAs@PCdAHceoBJccF3|CksSU5JtC zktU!Blj5xmrUjTe`~{rORv!tuoB7>NfjL!RRx5~vA=p5qW%BZTp-|jb$r_D%d^PiZ zYG?kntG-&cRbu>1R${SFSvCZVLq|u*a;hdlE`7RD;_$AN{3Nh-HyH<)c%##FGT==s zyUxK+z}=`3AA6TN1Dd`!=mQ4MsP^5O-^*dHcd7eD)<*g-&-sv(KudT;{Z%1&7;KNI z0w3uhfd+Dvzjs?1OV_RxK;8Y22nYPwf)o`aLJf$D(f%3V{xf0*_x8j~S7o8}Sl{;+ zJE!D5xDV+G8y%dZ?&ytU?pm@BFWAU#U2^|ZksNkbQ5;LTw*2&HC}%Ot64rV{A-zJx zQ&Q|dFA;T-Edr1-R7>IL1X0hg21dh95R5yy81%EImFf9{<312s5`nA>nCSVtv0aV67@qP;X6|hqDts^pYK%HXF$#QBR0F_<}@ID%7CFK6`d;OvnSKr6>;d1Sm zjsm2Ry20ae?U8tJ$7l0;?lg=LmEGLTV9x$c>Vh5~txf;geGA3y@7;Wu95yEP+1osxVT-nYQFwi< z{uJt&=pT$g+JS5?6uhpB;O1UpiPjDcwO?#g^>H4*>dc}7{36GE_R3)eyI}e*%S66= zpA#A4!{IWXo?Ll_s5vZA00Pd^`rl!y>IS@&QnV&#Ll6AtAA3vn4dWo2QSFN>MZSq-?|K+%*aK=$pcP$t_hhiw&-)LMeYu;Dy z*XJ9_JAkaG<4|31B+YRJI?wxJw5`8LTmY1t8(c(~A9t&T?`A%tWS1}3Xty3J)6u@H z5YqsW-7frIC*2Qx{tVPGOic+IgUNWNQi%M;4`bE4Aas?YaS92a zp1O-kZMdz~g8xS7?0;vD$7DpEIf6L-s;i_U+ptD1b`g9Qny>kaq^1(Uw1}ZQD=dwl zf!b?il0r@9*<1wV&c;D-Fs`|6Q5cpKi4Inw5rcVtO%DfSumbqly+t zx|l*T6sSswumn%r!E;Pgvn)ru0a{;h*?Yes=e_$$&h^~;Zsh1M=S#=C6l`0+H_vbFcU;ZWVjpF|R=$Rv?m2*n86e8}#J{!NWT6!}n$43jH z4q0eDn%@Ru_`;JE8S65Uarr^V5eymwu$r33l{%pff?Koh@5jdecPr-3W;0JNetGpE zG^kjnVc=z$l;OztSe%fy55}^eNcKL#6LA^HnjxAHn0Qi+%$|w-!mWl=5G0wA0{|>! z=h6$u>}$sNA_mV$ARq+gq$*hL zZwfEj)T+1gr0ico`*|tn>vm7C1%V;62~awF?-pb5)aq9Oq|P<{hM31GsQvw-?q94f zkI>8p=A80oK{0Qy-s|r6O=|QX@IZP37Rw)^dSMF)fXaA`jP==gc)OHSZeO7mOs0ib zxty5>sDw1mV<+P{G+K~IovB6hgS5H0Xh~0B$w|nrg(cqtF9_C{nG261smkk;{=NVD z3_rIJ7YNWI@mnchQdeNrX7ri*92VLF^WxH$p&#;0ge zoR;OU?DJI5n|dC0zK=!>h7)zeLd@x?>qWtuk>At1kO@z&fwLa6W7Q$CyX z>Ux5)m$!k1q>o2kD24vg+jr5)+^7%%@}naR_MVE=ULf>A1htMdPKYS(Tb{dZBE)od z#0x0OgJjjXDgoTA-dM}U<)KNTg@DHmS+0xnZydT(M`b@!%AK5>Bj*TP=j7ACcQsu3 zRaj#keCX%o!d-t20SiB+98k0fncvOtaA%0`RxcDAqqa-?^-R~sHz}OB*M9E|@AK!c zKx5|bhM}*j26U{o20hkwJ5F&ad@Dk!6qU@L+o^MqsxcV=3YVA`RRBc640d}vby7tP zm-44>slf&?h7RP+Pn4ncc|OB)X?!KEO!I^J3+htV;@9Y~X=MzVPc#b9tujYjM*Xe4 zGX`1ZB;l+pgVqBhQTt3JMgt*$YRe@>8$y5dqRx0LK2vCK&J+BB3UEDH@@+fFI?KAi zA}0+=EQ}g##XBWc*wLB(lQYNKJ!_n{17oDsohb3kxMd>fAt{j`(z50D`b8~YprAq&HnL7U~l<52BZbqvg z?DmK1kdIbx^BqG1cA)E-P#4|R4}qaSm{O3~1DtC^$fZeX$THMgC~@+@g%B)2fsgGi zvajvRi*J5)MXM#p64H*SV!RO+R#rp>9SfSejpDi$CfwWDqO-sUCivT_X7VdWoEj3K z0VUw0S!}^(%DcwAw$|?t8{A17_1CVtNu}~RvQ)soPL~K;xZ!l#3T4r{_(Jh&1 zzVC7anRPGW_lEuOY!NPWC%6LRY-;I1ZZ-lu5FguApX+L??V8)g#$2Di2%aQ*1|;Pm z^1R{db|@eQA{hbFfEfZ}X^^o@xO|dG>x|k1`7FMD^szxFqj*uJf{a?H5rCBXfL8_AmDt(v2ps^jPD?;p3iIILK&Rpm?0%XPDlw zctAWw9~{C6b(+FD5WC<8tAbZ8O}S*sdjEX?>7CW3W4Ct<3me0f3n8e#keHIm6iC(phbe)8eiB5Ej7KK7ufIQ0+84gl>~|0B_Og;lM)K=Fln^O z58+Hz_1#R%a#u)#F<2p;f&o}D*D|;0(>7|SBM$WS`L;W-BiYn+1T`N6-=@AypW9qZ zk7fhxAxIY!d(&MpNZB{7A#jzT+%0Ov*fX(G^`e9%Hn-%Vj>z)vvL9U88FfaVZum0o z5?pU43t*wG*j4EZACL!re1%RDosuIRA))HuEu`6II<$IExNYnEgV3p%8 z`p+ee{qyeRMgCv!&dN*UZn$uEP5_rI5hK@A5`^H^kA^|lDx_3;ar@!t5|Q6}$|EON zB#@9%o|pj^awh1`#VUHL0sU3Pc&pPgIzKKsA+(}7j58N_gt$4%C-E)mC#W(A!|S0C zbiQ2T!%MWmT%2QlhQ$hmdHZ%vXw}ck<%pP5#F=TXcH?pRe9>2idF&qY7j`9KST+d$ z?Y4ZfU%O2Eu)whStgEvg&IGneiGsLNBA;nNL`vv6SU|cP;_=(VGh?md4Hp-Wx{XO} z_ScOc6?H9Qf__C8pf6ZWq#g>eWB?H+i*Y6HepBQbToM2#&Rk_V(N;;~AXcFL@yBwC zJQi!s!+m&UKmZeTZ~-{sLLUAa)sLQ&dN-|N083&#$>fRz3rE^LAQ`?PGUB-f7$u<+r)x3$jxwY19 z`BbT~6@P#b-4jC!=m**hY$=mgTVl}IZ;J|2j!4}+D*RGK5Zb24rv4sCM!<+?Jnruz zvx6w~9U-V+0D=q@tWE{MAFNeM(IW{M2wB?FuNpHma&$^^Vu@B|> z-#n)KAy7^uATNxz+V03`4Idc*fL$Zua%d%I1KUDK<{Y?GY35|Lc><8)%@hP#O`}M$U3R*ijyb( z7p>I!2cR~oJ8Q*M>xJRnN+6*YE*N>5m;FKEVvCn1{5#TJkrlPk?$>8+v?Bsvz<&7- z=1a}Rh}Jyv!mnP652-J``m3}R{a8v3qZH8*w4Ab;cnVUNGiqkr|*5qC*#29F#e*es*G6`%D~LA;QdnXJ@I497ZHW$L*14-(^FiwZ~ph|nW$%0 zoUqKFM?>rOqx)-bVsL4BLyP~SpOceYi!~v=n$5|u9>c!DB2ko*e8i-t z2z)n~UM0&1*&p;GHGT-HxT}_283`(g_nHBs0m~a(=Fu;TzG({20W>=ZFZofd z_fjLILd2OBQ|&01cP(K+-r>~(MNw98i# zmTX*JwBb~%1*ux6B*1kOwLiUuRU4C{np8oD8=eZ5c9fXO47X}EeGm6HAY-rlJ1^WA*ppDw}LIB*7&_PO+e`bG`$ zw;S;XMT;Qk@r)TnXqs7VkM{XI-#H@qh%EipHt1W06`bG3Wse7n`!S8cwbsxXdzdgWp{P^M1E={$8Z?gaJ0Ea`OBS`w6n;Z`y9o}Q-yx9#M5~ElE?aqjme1wm; zEI2$6sU%Xw=Nd@|mA0tAp~HuYnHn0J9RKaG2L|0>oC?ZkFVGJPwxOov@Ukmq=mNJ;MK)*N_fQ-|a9+}42U?ZR(=Pk80|x??X9BmjWv zWPI}NC@{C~TeYj-4WGF^5Xv z2AH7*?$A$Qu0A!VHX16bsNi5=h#&S}{L?Q8>1;a{)Q{TBfhQ~tkB5ny(DT|E(C(*TTa}m-P zM6T}qL~NWSoriUU0@F`v!>m(+BwP2-(cn*16e1!bgHF4{-RVlN@AF#{BNccVzNv$^ z!yna}w?F2>0j$t4f|wi8`3N^=k5Sop+itRn4wET6y+}T(As!fv*<)xHN{$UmnLwk8 z?Du0T{R(_+Z7%kC7+DDKOI85>(qOy=09bOUkcR}sXkbdL97vC}0Km>A!C2UT?xV5j zIsb(g070@L3_rdcEMP|1b+Xa2)_PXBAV~KZGnFSG0QOt3v$KOO7vRNra{IgU+^GXg ztl;P`O}{9kqLNZ-StgIGT8Xt^Z|MYN{Hcu7KBhE_?_`Tj5CsVr0&z*1pUoBccwrGen2{jWL4~|>>m?QRl9JCjx>F6D@(}jO2)TR1gD$n zl2Z13%z(f64D^-Ep0JkPxhDU3q9$AHohX&wI=mYkG&eGC`XZ;{SM1B7RRBC0+FKE6 z8wZ4}0W3&Q&XNqa1}>izR?-N47QmXm2oVXJ9|$y&M=|urcM->>>k3UsT(W@sRD45z zaCTn;rpN#Hxo(O}*hVKN+Hk#y?hiM_8`YJdv4P2Qu=6bVflOU$0h)7=){vhd3rSNw z0fJC+;ICNmKy#m{jWHw(1~PQQK71(~t~4y2M^_msHf+2g5MHN<^Hapnf+F-JJmipw zv9-Lsq$FV~z~8h7e&^6~t#!R^lW?CcAnxm;i2(o>A_yQvM8Aax-8%`@6oqm&hGD@* zVxVY-gX}7d%Iji&Aaul+a0o|$ zt#1ExX}pwpFqO4{aM>kT@;Av)=UmotmQ%ZH*eMj$Xdj=YaT0}2Ie1q9m1H}4XYo}mH4B-!B?NxJy= zB}~ZhAxK8FA-BRV;!VuhuRTUfBmWaB8UHpZvCZtg3MbzhJ-w+8ZfBG@>DBr5gB*IU zcbUTktynd5R2ey}<%PwJc{sZRYPbldU=BulPER=X~eRsD;b3bw*B=r4Hd}AyT31`^!a~E|%8yyzuYDN!=fHj_W z3CI>SWn5+UCyho|ih$}W#^^Vh1o!+2M1m=^FfafeB#;0Al*W|FJcn|a$N^=NA61dm z)+wNdtCcVs?*{7yB8|Z|g`A_=0&+sH|DMPcO!N@@b}xJf2q#FO7W0vXv@`x(n&s6s zq(6gQeTCEENaqy^1d57wH1jNZBr1X+WLF-xTvQuHVOMcvBl?RlS|!-(#*oQ0&aj0> z;)g!IlX04TA>{V(yXegWw-S&I&;9S}|JxrUChFC1S83%15H|$e{|U35Og)c|?jl>} zQVQ&kqX0DNxr@RJ`vB<&24u)XE&54Ddl3?A5)M#grJ=*?6V5&q_Rb|t;p>P%xBoFj z6{v_myg1$L>#MAEIr`gCKnT4rC=e=qDyNMA;xVUl5jchk4Zg)cq&8f(T;#ScBH#lh ziASxVlvV=5BA_{U5lQDl^XsizzeA7m0RWlIVcT?0dxpUzL58ljqpZ-QHVC^p_;F~) zlR16vv-yTDv;RGb8Uymv-okoGiQimYgh9tgDf{mv1_|n*07-Bl1cC5a&Zgl#M;Mcl z6d7v!+a-d&^7NB{Fw;M4Q;Ug0{IABY1RCnE{SU@8q3mmRvcya?mdGxH5+jN1OJf_t z7*k=gjlG1jWLLzmZ1JlYOPNuUB`Jj>B3bg5Jv;BU{Ql?s&w1Z--Z|fM=FWVdyL|6` zp67n=bD!sPi_N2gF7hD0oT3ZjQhH6bUeKEI2J2KC&iATa9tvrEn)VEUK^)fDldHbl zX=xwp0w)Ch{YSc>k}JpC8CNQF)$Ik{L!;!+vi{;Sbfv$Fh`Au~W{i@;eD!t_+(O+^ zkeXT)loUblZihj5GR|GXMoT@CknyBgJp;j^`l6K(I5q_TT`Da@n--h0OIsZ<%WpP&5IuMHiBby|1= z^pB)oOzK>OE=>P2ABpGWjbg_PRe}4TVD~H1|MsS%l_|?cENF?QXWA)tHKgpuPpSNl z?bJ8~XLo)e-I8mxp;05ar@wkRRg-(KpK2F6m5*zwxjF^}9ArvuD`fU-Q@oWNEn6go zg(P*sU*B_(FC?6+suwN)NNcI-zMF(r7nP((_Uat^{8B>3iQ=w*=X`quo!0SsYLK5fAT6)}B~4WH@O>C&0a z>i#Yf{>Y{3*pbW;6dCqegPwYLvdZS$xCM;GoZ0fD)tkyQctJr7TT-Y?%aeCHVjy7t zK=z(|I0IXEs%O`i{G4mq$(M)%qO*`FYEEr5r7^*ib}BJlfK`O~AXchG$(Y4JC-al* zNdKKk?K5}KDp5oucdw-=--9h@6#-kUKxmNh>$$veqrrgIJW~ALQ*0xw%B(|IMgrJ% z*A9s-c9!u$=-#*WRHy?C$$SJ^V@}5uv*dYRK~bugT-u5qNk_OMJ&Eyk${Ngr5vO!F z@)C)8w)6D4(yWxjtfDvGygME?pEXlr8a(~s``_?ARr1(;TuKos*ym_B?HUK<>q|BObM7%$AN5pmE%@)mtd5-Lpt)Px?Z-fq|F=*8uzbn z#Yv5FO6p^OjvB-zUH)3HDl(`G7jiKJ+sB{om;M~AW6e3?`?1FCZ3e<8!G?mAG7NCzt^njt#b=g_f+CCiYhBM znHXs$Z{wWv8u7meW3r9ZX!|meBdQ(3CQKqfe!*&DVzLt2A`0naW%jq7WTa)yOr*Ctcpy$ooJr-S4I4Z^#PZOa+u@$4$Rs*_z!MC=oDRVq{hh zIfQo4d^mLZWpp%Dz^AaFu+Kq?Q!|DQTd zGGTZT${_()6elZCx|Ent>Naoj5#M>KdYTj%TLPy744ddl;-8ZIKv~nE-MvP+J-!MT zpJ`msu`C@9YxR_Yxyd#kz7q7^2i-uHar=48mXG<|C%WJvQwVKhjsX5`U zSuPIg7IMbtYEPf_LAiH2vJZx>!!_df+skLx!-rUtRA@kHtrgJqvIy9*GEFfY;ts1d zcaiYQD+R7{`Lra}{4;L@s>wx(!qAw{PkejbG~6(CpSfd;V2lEpvRKE-{vT1{+vJ}s zbK!qU?XN172@N|z2Mw#^ezl9X=gyyJ>9z45kYNzH8QNWH3bp8^-Q+OX;LXHQc?u(K zWQq>+CqMYR=x{T%SybhyksV>#=*8xXTuTwna1?Q@AC3E6j5FR_uPmIiTIw;^HOJz~ z2FuCV+A*Iv84m2gl%|X61SPICU9DYbqIgq6Z<>jeVu~erW>zHyxRda$Es0q zkTh)^VO&qj+Z@z&E}=5+DYfuwQMvZTDP{lP!Q`?NPcjh0tZ=sI%|g|N4}v&&g$tG1 zPKTlxHX-_$rYDjN;%+R(R{ROpYzApYEa@~^*KCh(>3zL_rkZA-FY5@MxU4SnSXc1p z`J;fhFXsa^)ULdS#hKx<<%&32?4-0-dR7l10a$c-u%^A!a+_J1gKQ9ii;x;m?l0@; z@=Y{;_!U{bI3QJfZhoV#nf~%_8uO(Zzqgf6&oxA3c0#&<{}%4cQ+#UP^9kDhH@&}x zowqj`Fc@Wl4^6a9KEr0ocn-JgMjs95VsDCdX1nv+P0tn-@{|Y$ZNGe*RpC+N+qXR6 z-s#!eC5TOSyTAax=V-z=T5c|r{3AzY z`xl$Ze_7{iU7=SZsBcm&`sD%|yo?T|SdXL8bGOunLe{3jv3VMG zjuUF2Y$KRIL zIfR`4#Rx!OXb=q#yAE$=sLFik*3yx~kL|CKma=iJN$W5+>aU_?C-0%glbfacMf;K* zK?o1^i5d~dFU>hDDQ?GW#_PM>49MDWLdCf-mTV=QpS?v)xd&lQOt7dFBc?if16 zw?bH(3T6K4JdV8?k z4K8l(z>Spv4cJa|1F`}~UnOK_W)jb?&K&12&xUXL2DxKmSa|2>=O+brDu3mUb#ijL ze!a0!&Ou?ru4VS-7{yY-2EmnB9ee0V*y4L*65GyGjqXHvo}8MRy1t6+6P_a*@dMm8 zMHMrjuk}m0Cj+qsI%aXZjYrypv^F3H!y$Knqw77hXJTYHlNI<>fK$7Tj9y2v>zp>; z?Ny}x+VV`n?b{ZQ&L1`FxnT9|220rXBqKXwcIG}ly9AHC+wtovU?lS9+ES5ma!C|; zCSXpM0BNV^Ay*1?LLIoQtW?d`tr%jRFaDgoz~+F&7#SsjX>@IIN<{POgYunj(09x0jy~9tfyhx0xD*sbt(?YI%$6~-HGP5FS@0lvNREA1zJ8y>7#eCX4+a7sR(W}O z-0MVJ;N@M7YkiZvH!#;Z=K8B~KE36F${waBChemwH)p8dlK{N(vre?ZftC@@*~G4CisEuEh8B`iQbk2Y++1AXWP?)c3L!y3L0(>7ZfGwQ!=5p)~Ta~S9=P#e6^i3avGRC?R-0zio1AJUO9xu)ThccGnB_+deQV#8O z%3NG2G)0xEv~-?L&&I|kC@9Fy%?*RWfHbfHv!ga*CnzrELF^q@Rf#*g{k`A%j+HO?Lj0u7x(S}Z3NgHjcp{~mSxZqWoJhbKtGj3q3owN zB;GSm_jqN$wqo4w14lk2w@xn+>%Ju-#U*#&$3SE)7Ynw|#gIQpoUSmE1^>%o#cKFR zUmLRzwAhk?5Hm`wYj1DQwTq17D@U9`?{d6YWZ+tn`&An2p$aH8yqT3>u{Fl|_s^AS z6A{ka)0}2K<@|X>`t;H~jHQw{H->fpNt59Sn?icKu?-rA6dLqX3vV7C{mRj##m&$p zAxJ;qVSj_prQ}zu2|79ojJlT)Il1ZqSLYz0w;M&Skvc?ye)%N1QJmWb9F? z_!mw}tC%&;84Vv7r&k<~L;YM)B%7_5># zS4ytJcT2jCQ0-MEcX8;n-5!Ukw75Jw9bsy&zP(U8v)$y}l~;T)BZ3;lv@391!Y${p z!W(L*My{o@ZlBRhxwNNKY!zt7Pk3((ckDJpyi%HH*Vhzu*Z-vA{^jYgnVFQ89o>|7`X6iNey@?~+n`u{Tc z`n%yhg8zF4;fp`oK?eDq8t^!r2F{-lOvHP7kst>Dq{Q_Jgv;)V;%EGDNJVi_HM%*A z8ytTD;r}O-n|mORh$oQn{(cY)K9F$PHJJZMIu(!z{6pgF>UYJ%6-T;4bSM5plO;3- haQGpd|3~BR1~#bn3s}j`6$dvVXAH5J%2O_se*?nn7MB13 literal 0 HcmV?d00001 diff --git a/Messaging/src/Tutorials/img/tutorials/intro/exchange-fanout.png b/Messaging/src/Tutorials/img/tutorials/intro/exchange-fanout.png new file mode 100644 index 0000000000000000000000000000000000000000..7fa844e0c60431b0b441a779217aa9c1015ee384 GIT binary patch literal 75120 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

L7oB}5D{v%AT(0}d+~LHzDUC0)@;5zmUHdsx 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 Qz}f@JORGp#0g0CW53>i#(EtDd literal 0 HcmV?d00001 diff --git a/Messaging/src/Tutorials/img/tutorials/intro/queue-declare-ok.png b/Messaging/src/Tutorials/img/tutorials/intro/queue-declare-ok.png new file mode 100644 index 0000000000000000000000000000000000000000..c589f2ea97a1867986be8d403a3726a01c20e889 GIT binary patch literal 41383 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 literal 0 HcmV?d00001 diff --git a/Messaging/src/Tutorials/img/tutorials/intro/queue-declare.png b/Messaging/src/Tutorials/img/tutorials/intro/queue-declare.png new file mode 100644 index 0000000000000000000000000000000000000000..4140e5810f671ddce78e70f6ce0033fe62478bba GIT binary patch literal 33391 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 b|Nei>A6nvAuavY^GXR07tDnm{r-UW|ohqdm literal 0 HcmV?d00001 diff --git a/Messaging/src/Tutorials/img/tutorials/prefetch-count.png b/Messaging/src/Tutorials/img/tutorials/prefetch-count.png new file mode 100644 index 0000000000000000000000000000000000000000..6174ddc034ea1f8ca025524585dcbe38917d5b68 GIT binary patch literal 8418 zcmb_?Wl&sA(C#9OdvFbb00|!4Ey3L-xVyVM1P$&If(3V5U~vM$-Cct&4hwt9TXn1M z{qg<#>P($EQawFAr)RpKXHK-Tq7)_?DH;F(z?6~xtO@|Y#lBuUq9DDVVR?7cuN9)D zn1UDpP?vxXH3q)kzcrOsRR92d=m3DAFaY53^-<6v0N~CB02~_u0Q?yM0FhHpyNclJ z3nUXcsm}n|zoVeDG#LP(dXV`nrtYFQbf) zEl%szkIsb`TNYi`LnbaL15(Ba=}#{BAt{4#N%$F+GDlW)R~UX6-gj*LBxh}dYA%~% zP{$%6&)ma1aAIcS%*|6n%TsGX?}k$2ElSA$Y7tK^Dy7EOr>vNqt{tVpK@=NiXov5t z(|uYNd>GOuza1ycRm>`ByOy5B)MnDuL+qe2t6RPe?UF;k=eFwkbpz%%5>oyiAEL9n zh63M?x*={t+3sg3PGODy)yQ$qqLHwYf6b(cZ>{q&a_w2sxvl-id2ywYzM_^!Go8M0 z@aVJbE#4XoVT;NGN4tCa9Oj_I)acrDtM$NctBL1(sguG*N6iLi5q@F zt!R7_dy03!6|NQy1 z?mTY5hXz*!VGeegiz+3LtS0)Fox3XDuGS!Plbrj!amrPP(GZedaQGUmuvW4t70l@n zJ+-e2=$$|9^ZReQbgHaG%Rzl=EQRM|1~;f&?|8fZ9J@W7tV2tKC?Sj4JVkL4rZ|bf z92?H88(iW8c*a;ka#5nqe6R%F{`X&X&q((oJCw`ttbnVXaUFCFgs-BM7qo0V)Cmc} z4x-#nRLW?6DYfT)KI@*ps)X;9Hx6>{pFSE@T*fzG1hFuu^P(E!rpGmr;0uKD);sHHIa{s|3F>iGO=*-K?k{V> zN8lq-2XTIz52nBT<39XfwVnjZiM#q#Y?21zqs2wc^yhJvKOCOh6}&$T%~imRnPaO5 z7Vic*>ed?Qw2r2R)tQMiWGOlyDc`|n!H+))OS zFIaE*8Ouk$Ql+ZvpB2_kNb`P@BA~H9TRmS+$aRy=Z)3#ns0Gw&+v6MD>gjFpEO_e+ zC3G+3t=OPWN+L?`Utx;O)4$LfBTj$Zy01g+)&dl%#+s03OPP|OKyeq*t-vyLyP3cK zr19HX7_bu91{b0}MZnu;$>?`t6ywQT`pLw6)34*t**WE_+P}%UscU)GcvGeQNv?3m zO7HXeL3-=TSKb%eij@w$Lne5d25<5Vu{i1*{LReP9V++)lIab&93)Uy;t>8$j-1M) zKeiL$1?!tDD<(2!1LY-A!%dwx5P8qcv95Ks!4Bc~XZjPOd;m^lN+3&RX~7si92YuBt`MVi zB~H>h?a~1a6V3%oHn3~_-pNqL%Tpo_$v$xk^?qddz>se5`!5w~a~hH`2>&tW2{$B{ z(i23@9XpuPMtzrf?BgEYM~p51*<0Hl`2`VLoH?t8S^RBA!K>OL*HBCN3m*}aO%nHn z1)2E-v)A5Y8>67kDL+?sM48w6Or8G3YKI#7{bQk>$2+zxRJ`l=oF!-d=q0&e1hAa* zkRwMk7OHLpy7Jkme-IwcnAuyGD379Q>!ji*p-JrGUmz+ktk!7;Un+IbsMO%0n<2+T zHUF|;o2{?Nop*J`!R1&r4V^=1Z?>06|xgLGAtCb1K>Q_sf8{yyO5>-4)Bp zrS~qdn%$>;UE1^4RK^C;!Z6)(z;QC2@S2j!achUNGoPi3=|PZ`rm4eHmeuc@nFg*0c`wVXW{3+HKg({y5)8 z8O^8OL|n z3hMY?taFOHam|E*Gb=yizSohbifFKPTu#W0YEZ*&GzuEwGOTr6pSjL>anN=60o^#S zcb_KEGwFg*MsIZcU4%?R5F@gwhI~(WUXB^`!qO6}sV@aF;HvmGdH<%PG(RFXxXvRU1<`FMJ9H(enmAIjpS@B1OSU+jlXtvN-XAjkHgs zc$P`=i};;bLmVpaH41 z{gU4)NNmfi7ME8^b(8Wo1m9VB_{Hf!`+Zl-jVoqA1<#Z5ab}+9zS<6S=hwJ|LZl>g z@Dez>!qIg?9Li_ikw2)N>B^^1;K!w>qm+OaKelP=l?PAx#vY?rP7wqVB6b^7&~~l# z!Uk+Sf7q$MV?!(iUh#h9@U4a6Sj4>rPrtO)DQ<6yPCu5kk=--eFh_W4 zOo;^R#kxEyS2yIBTzdCc{F?sJT;B%DZCJ+7T+ZVcxT9?~*FQF1mm$>5F?#`z7))|A z{nxjKSc47(uAOsq=OL`QdM0k4XM>br=%3c9kYYINeRzuUI{W@BZl`x6R_kL7ruGX~ zcD9SeO&S5Y<1M=SX-uW%taY0?qYMEzzf%q{zvfXk#Bnj|l@6ARAx6AK5l0J1fFM1g z70Y%2tYAgd^1O|&zHD+Fjy|+1=`@7YEW#GQndW{tg~Dz~LLj$cIWtBx9k4S6LC{oZ zvluIrI1YVnq{@z)e?By}YQ&1?nL#Q9JD9ccBkcBPxvNM{}~8TP2Mseumj^mvvI+wS~fR zpd`N?@zXwRfa)f-GqKh1pRrP;rx?bQT#9V!unodJED*3M_5v%ZCh8FRql&9xC)($0 zr{T7{IeI$xjzEV712J}8Rr#gTD`uq{X!>z^_CMa1Q8J&{AyLTG%$+{}S|ez2VqC#n7-mC|EVENKG&e25f%2duy}0?k1-kvCayhNK0Qe}G zi=T!BchW-w#siWIONO>AbxYl5*E#vK>8~=QKR{GY=K#+qq&%fkl$$9IkXsdiz^TmgoC7 z3+Me7zLDR)`6>@Gis57tqK_0YOci_;(jDe`#JUXG+-dzTK8Je|`>iOIfSyYG0)nhT zwm|NAJ-Z-u8`2xgX!dY`zQ}JKoA0#A&5W0sdkl?0iQW0Y;1v%7nR-K=S&JltxyCqR zwVBwga4<-Bx64a6%S&1Ize`CPH;orno_OH(E&#=>I3GkkZFrdINmH~E4Ftqpf40bCH$V_tA~g zl@nM(5knLgTCrf>?3U_--QI2(J}+z=(7TyqJ-!e~{GE6$^CCk7Jp240k0K6Pgt;=Bda3hL^tFSI;f{pE?Jx(#aC_z>S)LASr3 z>*Mgq#VOhd1w6rC{OryRsj8-nzVFqIKv2OgnC0r_#6d$>?8)>8PJgRzV>#Ay-0&*( z|85^wu$pi62HgAg$!v=-p)kiv0Lv)s$v4zT8H`)pDzVT>v$)kNAR>l!c3bAbHx+cc z^*Q?Jd0*`!Mrbj zveWy9zh~O+PmF~>T&>AxOeUlo=!Q&qe%$BpK@nGb6{XzdwgBlbPw|&RfUm(T(W4H1__O zZ+d+_2m6$xA^^Q+S;D&$f#Vj>kHJia!r>z$A5^Kr`=XF}BX+Ax^&gyrbU}Zu*=-2b zw}y?8*`&~c2UdkJYmD4F(LI%|wUuwNk113?5_zR%Eh(X^1Y7CF*^}AG%p7l+LuSM9!(x3J znBSl!%NyaF)U6KW@Hwbqu3maC*(s|d5*cD(3!^x+w0X`|Q^;rUn{4-6@;Pndm%ECq z8L3d+m4f9WMDNA&zD*|8(vj$|4rj1?@Vl|WY}%`vl~LCHiRP=r$sFY;a^px$d$tY{ zuG1HoIDuGusn?_zU(oRh(@E}rmR^#!&;Hn_V>`M1+qM;Pt(alnAl4ngW{CxQ_Q)Dk z^tc~$T*b#oaH77+4rEb71hYv*#fW~=F}m*Ext#2d=HEMtKWg2@ zW1Kpi$m;Pu#9v_aCpKpw2$TO2sv?z5(~W$Vre)Oy=8dD4m_8>Ui0Nr}zZf;_oe0e9 z`g?tXnw1v$N!WsaudJBH5jm|ewivr`9*7h6czyf|zkdi?b0c)i^9C^5WL=6`RE zL#$~_^mudi)BUq?U77X7gpd~3A%|s&C*n-8917PLao3*stb#S=S0U zs?GvV#VQHa06K)Co%no&oScj2d~|vCus9-KfV&3WweQ>^05_`O2`Xk8wcxW|YjpnLs?fh;W^hYwT5r`8nz zpze8>N}q4Zao}l6wvsozKabHO-#UAbP4F)2IY}gOBB;E2B1<}ZG3z-)N zFDfr30iU1fuV2d85wy@3R4$vMW$j?yx)$M|vTE7QCR|Pyukl1RQo-t7a9z?^cJ9fB z<4Y=50(kE+>km)ZL+tl{rt4omfc4&rNlYJgPQlH9nLD`vk4^@ZY;VnDZj>}aoc>rph7G5 zQTXFm)PgPw8}5fT2dyvkL)|7F;huGpuiUb8HaI7R*q9NHqp)J7$~kBlG)@-zf4N2c zutQH31!#vstoYU2C5lNxbz?td3Y>+{w(dA^jg;|-W2PQwM$v0z@dh{BKdWnSIU3iw zl`ASLvNMm0zC!v?U<8>3iO_x@^DE|%QCF4iCXQp-ji%2!pB{jnF z>lVLy4~VO6g#

!ZYm16zZU2EGlTs&E@!>*;eZA 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�iA(mV-Mv7k3>9pa+K>{Z`9G7wl>{G zv^nrSt`8$e#9K`<_WtYypKSE!lN7T+E3G=@0~uWNxn%e>tsJ?o1ffIXG`po7QyJCG ztC`%MC9r2<$HlE;Di zX@q(rfYoxX>8EP9Bsj}j5+DKZrx@KliM$-D4jEv~Z;tY~G~2ULBv%{+iQ5ZR2#mGT z7%lP%yPhbGq})Z+yCMWpY0hyq7PSkmaSWPq5v!5ij(@Vp2p?69(1ZFp-O00)H*3l> zU&Z70Gm|w5<3I4w?X~$SJP{_LxqZbF2}vcBBF~rrqJAK*ptCM)_092emz%Wn9{0QR z)8Ad`0|by5#tVG646Um|w}Cm-XX;-c&+84K+fqLlA)l{*fV%9FvmyPkf4GPxg4=$0 zSq5Jv?-m!05M&g58%8YSY4d!#XV+1utF!;W$!4$8tf9WP)ZkKeDmR|af0V27{?KSo zsJbV9B{q|z>EJZ&F$P$J>?!r=xI3c2U=LbEj`Gos>!RU+pM^uQOg^O_-FeImJy`)G z_3*%1wl)?zlhp9NjD{txQ1s)=adB~m#I3t*D*pjZXUYPo+G z)Vrg{r%9euk<4CwA?zyKiSyuWr|j~Ks&J=r0bbm+O^yT37so6Y=`MwB*K6i&C-~qQ zguU?V3YvFnWKfRCSFn-9uNj$>{e+i9@w>x)JF8#1?*55DQULD+<;Cr9DRT2igXK_9 zysUp!y_-0z%@?#2nm%nuR(69rgvE2ZiLUV}DZnQ?sza|*x+_rz^IM!#yX2{Ga(A!s zmg-`0mRWPH-dXBt)koc4Wq+MLBOP^FMW?%Ysxj}~DhUDhyLNNKzQl%gi|R!DL85L% zbBpPZ&IxCJcI4T~hVS2Zs9?czg1F!Gn1#~Vs(5^FYhDjA#xwW3Yf=tXxb!5rSO0mr zi0(bK?l)LmyyS_x0 z`}rQ7!MA|Q`ZPP&-PLSGNw$5dw8%Y&U2E@^w`pc7v|>#H2^kd%u|H2Yq*8P4_NCZF z;~XERdN*cG1MUWIt|rtq8N5t>ZWjJTi3+Lb7-*eu2v^^5suT-eiaZW(9bRtnht+mQ z5t=r_S9unsxV*z-CW`cB!!Ckl8kHs`1!@QYXGZOp(S?<{q9?kW-ux$`Wtu-fh%^8V z$YIYJT6e?wB}PQgM_!7gEN}n#uvCoYDS1B>ULI)7@SG>@PxbSby3&cqNnrUmX?L(! zNJBA`&}lS?Rtpq?TPth~BrgKtZHx1jU-SjW?gt?7vOjgoF0#zkyI(>*+qT8cNMNO} z@w)zQK=0!o6L}U(XoHKouiT!?@z0=-JZcVZ9#O~&IlI`g=mo64N`D#QwJjfr`kq^z zo!^vw?wsRetNRNPC!)n256Wvqp4ssiBcv?S(xRve=zg( znXIWKGI8BX_Tv%ft6k-dx!p+=uj(758b6A#s68_Oc%q*K?(oMUSCy=Id28J%Y@pvH z4mReSuBe2P=uWh*T94B*i55?KT_2oc-wiNg73Ug#s{es$fdPSRCHrDG3jy~H(e8km zRKcF6i=EY_n7lugltg>dzlx1t%wBwFD%4|B|z}A9%yDw$i!aRBJF&vyglp?e$VlJ+H33C@SGGR5zHkA0oM^D;rIL6VgW- zj07kUC&;J{MPJe6U5dfepuOU|@V-fOSLXl^D literal 0 HcmV?d00001 diff --git a/Messaging/src/Tutorials/img/tutorials/python-four.png b/Messaging/src/Tutorials/img/tutorials/python-four.png new file mode 100644 index 0000000000000000000000000000000000000000..ab8c7e054677fd45517b415740ac7f0bd27447cb GIT binary patch literal 11851 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 literal 0 HcmV?d00001 diff --git a/Messaging/src/Tutorials/img/tutorials/python-one-overall.png b/Messaging/src/Tutorials/img/tutorials/python-one-overall.png new file mode 100644 index 0000000000000000000000000000000000000000..88eb316d2848dddd351061f9d7972e2c676bbe37 GIT binary patch literal 4274 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 literal 0 HcmV?d00001 diff --git a/Messaging/src/Tutorials/img/tutorials/python-one.png b/Messaging/src/Tutorials/img/tutorials/python-one.png new file mode 100644 index 0000000000000000000000000000000000000000..4712ad63e0ded5509f74cfe53c91e9af3d3ccb76 GIT binary patch literal 5112 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 literal 0 HcmV?d00001 diff --git a/Messaging/src/Tutorials/img/tutorials/python-three-overall.png b/Messaging/src/Tutorials/img/tutorials/python-three-overall.png new file mode 100644 index 0000000000000000000000000000000000000000..19aba542212a720a55f20c8138496dd0d08be7c0 GIT binary patch literal 8640 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 PfTAp~@wQUdBK*Gqwn4C; literal 0 HcmV?d00001 diff --git a/Messaging/src/Tutorials/img/tutorials/python-two.png b/Messaging/src/Tutorials/img/tutorials/python-two.png new file mode 100644 index 0000000000000000000000000000000000000000..43699812054b50240cd6002c93e20cd3d9413ce2 GIT binary patch literal 7450 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 TQ66PrK4S26^>bP0l+XkKN}re6 literal 0 HcmV?d00001 diff --git a/Messaging/src/Tutorials/img/tutorials/receiving.png b/Messaging/src/Tutorials/img/tutorials/receiving.png new file mode 100644 index 0000000000000000000000000000000000000000..3a8a7d0aa61ea5c9b66c158a533a453d62f9f211 GIT binary patch literal 2760 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 YuI;jbonSkO4NW<0tYDVq=7{M30_}h?E&u=k literal 0 HcmV?d00001 diff --git a/Messaging/src/Tutorials/img/tutorials/sending.png b/Messaging/src/Tutorials/img/tutorials/sending.png new file mode 100644 index 0000000000000000000000000000000000000000..abc5b92affbdc2b0f8767d41aaf3d2e1e801d04e GIT binary patch literal 2426 zcmaKu`9BkmAIIm~G(*UT35$H(H!+6MNABjzeKcpuzK+I}97E3f5I$*TB7GcvDf-OO zG&bjoWpXap2$AE1#MB%g-#_5{dA=U+_v`2P`}O|eo$G?K6$ZZC>jX9mWu+5+)h+t8*(;U%Q=Wg9h-MJ+{UOB&tM zi^IISrxRA#*$J5CtLBqubR|M=y`t-p(h}$N&x!6UZzZ7P3-sLR>k$e=f=+Asu_iHs zq{d5GhJ5?D{*K^t(+k^mmLC0j&(qGE_u0vjY7+1!YTQ>mxLq~(LaTQGS?FH*8J^EG ze!O>BS}Fc{pgrb@t%_~cA& z0A;0ZimVl_%x0Zz=?W;~b^bj7EO>ABY+efZ%#!J;_baiCqX#98Z8YtkjgI`TF7n-r z?5ZY18xN0kHFq1Az`uhS(t`Y`!@4iw*Ked}fDp9}o55@g(bohktIkqcq^4iv-3vpMUVH2Q57r zc%Bfwsq+wN$@|i=$TXUmO@WB3`^bAN6WY`yE#3DiI$H#aVWC|DRL z3eTU{43G(7K0T5g{n~PC8qLLJ2nZ?eCy6;Y$n&Y+Jme<|OR~1q8%YsUM){SMkKmkX zx#ue=Z!J2G)p;`>sQf*M_(P&Ot!dQ za~$Is&J25bD+p;kvq)QbtwnBfa6pg!*UaKa4}Et+r)%>VraeJfS5_ECv}-lG{!!8~ z*c73`dOI;t^sDxCGWm6uuucBm_%$%Aqn(hKSEH)+vX}B2{|^7Ll(#g8$*~wH3FsPs zdA?Q}4NI;@Wr|vC-RzYVI>jGo6%7pon7F4UgQ%%e@$t)zNn}uV+11kB3?``5m`mR7 zyC=wxd!|^-^Eplcr=6LJxV=~i5Rwu(kl#b8jE;Z7b_*}4Y0qBdaFi6uf4qnx^7AsW z%Vn3Yc!>^;cmg9Q5()ZYU<>xD0ZcQv;k!Ud`EjH&it^y028iuLTS~7f-<#ha1w2|b zm4nU>OM2@?am-KF)g3X9_$_;(?!!h_9@x7DQt7%DOfdiiLTvU7bPL1aS zI#y_B`7P9V@aJ_EszE{TT(4BnW}r8P^%D*l8#^uNM5E|5+M$TP=)h>S0v8uxMBpE${MV#XPi0^6O!VFxjYRoFK!rb znBkw6N#75jGhS&jl1*x-wY6PraVlMQgA;qq?ocAIf5y{RAk;_!8^F}J`EO*G%FifoAHK-K-!QNblI^F4_ z);NfQ$Iyf*S<^n_A01ZZpLCSCrnQxbRQ`oj z?>H1e0aNfMms6F5wnImvLhL~|XdannfuYIC8TS?6;3#LY2}LM!)BVPRct_+6J;nd|T3O%-dXn(E>| zv_K+ejH*XjCPp;BZt6DBsa*b9d$L&LuM=N$Xpi4IK&=%MhNlk@%Fg+X*lV6etE6ms z2iy{D5oB1X-Xmz!y=cZxy&@gYp%$U80$AgJLzu5r)Y;5s;yYS?I zC*n%d{!Wo=5YKuR>h|rsV|5Zf+@$d#z&$CtG{UIATl6^7WyP;2IJK*i>z(Vpftg5Y zxAmLC`1*#&93MLCr6hq!;R2uDhz+nUBds!Jv09po-3Yve}A5@R%TIQ7C!}N zQxN?v|B3bW>)bd3ZEO_qHt6yXdX}SSf(M=x)lOncrmxCn>{pFbxP|8a7)`lS}E z^(|im=X7olf>M2pglI^#`)kh#`qUa6y^Z~+CTF%=)xrd zb5GWz)EAq!1SSMt8P)b+0z-2#+V#63+I7woJI^I|E*YF1aIpS&vhc@z)0;QyBNx;o RPo61&{Uwz3tBdILe*h@2j&%S4 literal 0 HcmV?d00001