Edition 0 Updated to asp. Net core 0


Implementing the subscription code with the RabbitMQ API



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

Implementing the subscription code with the RabbitMQ API 
As with the publish code, the following code is a simplification of part of the event bus 
implementation for RabbitMQ. Again, you usually do not need to change it unless you are improving 
it. 
public
class
EventBusRabbitMQ : IEventBus, IDisposable 

// Member objects and other methods ...
// ...
public
void
Subscribe() 
where T : IntegrationEvent 
where TH : IIntegrationEventHandler 

var
eventName = _subsManager.
GetEventKey
(); 
var
containsKey = _subsManager.
HasSubscriptionsForEvent
(eventName); 
if
(!containsKey) 

if
(!_persistentConnection.
IsConnected


_persistentConnection.
TryConnect
(); 

using
(
var
channel = _persistentConnection.
CreateModel
()) 

channel.
QueueBind
(queue: _queueName, 
exchange: BROKER_NAME, 
routingKey: eventName); 


_subsManager.
AddSubscription
(); 




141 
CHAPTER 5 | Designing and Developing Multi-Container and Microservice-Based .NET Applications 
Each event type has a related channel to get events from RabbitMQ. You can then have as many event 
handlers per channel and event type as needed. 
The Subscribe method accepts an IIntegrationEventHandler object, which is like a callback method in 
the current microservice, plus its related IntegrationEvent object. The code then adds that event 
handler to the list of event handlers that each integration event type can have per client microservice. 
If the client code has not already been subscribed to the event, the code creates a channel for the 
event type so it can receive events in a push style from RabbitMQ when that event is published from 
any other service. 
As mentioned above, the event bus implemented in eShopOnContainers has only an educational 
purpose, since it only handles the main scenarios, so it’s not rea
dy for production. 
For production scenarios check the additional resources below, specific for RabbitMQ, and the 
Implementing event-based communication between microservices
 section. 

Yüklə 11,82 Mb.

Dostları ilə paylaş:
1   ...   124   125   126   127   128   129   130   131   ...   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