Browse Source

Merge pull request #4 from Espent1004/eventBusImprovements

Refactoring eventBusRabbitMQ implementation to make use of a dictiona…
pull/1240/head
Espent1004 5 years ago
committed by GitHub
parent
commit
098a75363a
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 8 additions and 2 deletions
  1. +8
    -2
      src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.cs

+ 8
- 2
src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.cs View File

@ -12,6 +12,7 @@ using RabbitMQ.Client;
using RabbitMQ.Client.Events; using RabbitMQ.Client.Events;
using RabbitMQ.Client.Exceptions; using RabbitMQ.Client.Exceptions;
using System; using System;
using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.Net; using System.Net;
@ -36,6 +37,7 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ
private static readonly String tenantACustomisationUrl = @"http://tenantacustomisation/"; private static readonly String tenantACustomisationUrl = @"http://tenantacustomisation/";
private static readonly String tenantManagerUrl = @"http://tenantmanager/"; private static readonly String tenantManagerUrl = @"http://tenantmanager/";
private readonly int _retryCount; private readonly int _retryCount;
private readonly Dictionary<int, String> _tenantInfo;
private IModel _consumerChannel; private IModel _consumerChannel;
@ -54,6 +56,9 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ
_autofac = autofac; _autofac = autofac;
_retryCount = retryCount; _retryCount = retryCount;
_subsManager.OnEventRemoved += SubsManager_OnEventRemoved; _subsManager.OnEventRemoved += SubsManager_OnEventRemoved;
_tenantInfo = new Dictionary<int, string>();
_tenantInfo.Add(1, "TenantA");
_tenantInfo.Add(2, "TenantB");
} }
private void SubsManager_OnEventRemoved(object sender, string eventName) private void SubsManager_OnEventRemoved(object sender, string eventName)
@ -377,14 +382,15 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ
var concreteType = typeof(IIntegrationEventHandler<>).MakeGenericType(eventType); var concreteType = typeof(IIntegrationEventHandler<>).MakeGenericType(eventType);
var handlerName = handler.ToString(); var handlerName = handler.ToString();
//Not tenant specific handler //Not tenant specific handler
if (!handlerName.Contains(("TenantA")))
_tenantInfo.TryGetValue(evt.TenantId, out string tenantHandler);
if(String.IsNullOrEmpty(tenantHandler) || !handlerName.Contains(tenantHandler))
{ {
await Task.Yield(); await Task.Yield();
await (Task) concreteType.GetMethod("Handle") await (Task) concreteType.GetMethod("Handle")
.Invoke(handler, new object[] {integrationEvent}); .Invoke(handler, new object[] {integrationEvent});
} }
//Tenant specific handler, and event belongs to that tenant //Tenant specific handler, and event belongs to that tenant
else if (handlerName.Contains("TenantA") && evt.TenantId == 1)
else if (!String.IsNullOrEmpty(tenantHandler) && handlerName.Contains(tenantHandler))
{ {
await Task.Yield(); await Task.Yield();
await (Task) concreteType.GetMethod("Handle") await (Task) concreteType.GetMethod("Handle")


Loading…
Cancel
Save