Edition 0 Updated to asp. Net core 0


Implementing a simple publish method with RabbitMQ



Yüklə 11,82 Mb.
Pdf görüntüsü
səhifə127/288
tarix12.07.2023
ölçüsü11,82 Mb.
#136458
1   ...   123   124   125   126   127   128   129   130   ...   288
NET-Microservices-Architecture-for-Containerized-NET-Applications

Implementing a simple publish method with RabbitMQ 
The following code is a 
simplified
version of an event bus implementation for RabbitMQ, to 
showcase the whole scenario. You don’t really handle the connection this way. To see the full 
implementation, see the actual code in the 
dotnet-architecture/eShopOnContainers
 repository. 
public
class
EventBusRabbitMQ : IEventBus, IDisposable 

// Member objects and other methods ...
// ...
public
void
Publish
(IntegrationEvent @event) 

var
eventName = @event.
GetType
().
Name

var
factory = 
new
ConnectionFactory
() { HostName = _connectionString }; 
using
(
var
connection = factory.
CreateConnection
()) 
using
(
var
channel = connection.
CreateModel
()) 


140 
CHAPTER 5 | Designing and Developing Multi-Container and Microservice-Based .NET Applications 

channel.
ExchangeDeclare
(exchange: _brokerName, 
type: 
"direct"
); 
string
message = JsonConvert.
SerializeObject
(@event); 
var
body = Encoding.
UTF8
.
GetBytes
(message); 
channel.
BasicPublish
(exchange: _brokerName, 
routingKey: eventName, 
basicProperties: 
null

body: body); 



The 
actual code
 of the Publish method in the eShopOnContainers application is improved by using a 
Polly
 retry policy, which retries the task some times in case the RabbitMQ container is not ready. This 
scenario can occur when docker-compose is starting the containers; for example, the RabbitMQ 
container might start more slowly than the other containers. 
As mentioned earlier, there are many possible configurations in RabbitMQ, so this code should be 
used only for dev/test environments. 

Yüklə 11,82 Mb.

Dostları ilə paylaş:
1   ...   123   124   125   126   127   128   129   130   ...   288




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin