КАК передавать данные между 2 сервисами в Microservices, которые используют RabbitMQ в CQRS? - PullRequest
1 голос
/ 11 апреля 2020

В CQRS есть 3 типа: Event, Command, Query. Я подготовил несколько примеров на github. Они просто настраивают издателя RabbitMQ для 2 типов: «Событие», «Команда».

Пример: Service.A, Service.B Служба A требует выбора некоторой информации из базы Службы B с идентификатором.

В CQRS, Я использую типы запросов, я хотел бы отправить данные в Service.B и получить результат Service.B.

Могу ли я использовать RabbitMQ или HTTP-клиент для этого?

 public async Task PublishAsync<TEvent>(TEvent _event, ICorrelationContext context) where TEvent : IEvent
    {
        var eventName = _event.GetType().Name;
        _logger.LogInformation($"[Published an event] : '{eventName}'");

        await _busClient.PublishAsync(_event, ctx => ctx.UseMessageContext(context)
            .UsePublishConfiguration(p => p.WithRoutingKey(GetRoutingKey(_event))));
    }

 public async Task SendAsync<TCommand>(TCommand command, ICorrelationContext context) where TCommand : ICommand
    {
        var commandName = command.GetType().Name;
        _logger.LogInformation($"[Sent a command] : '{commandName}'"); ;

        await _busClient.PublishAsync(command, ctx => ctx.UseMessageContext(context)
            .UsePublishConfiguration(p => p.WithRoutingKey(GetRoutingKey(command))));   
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...