2016-02-11 7 views
1

Мы используем пустой интерфейс маркера для группы событий, которые необходимо сохранить в какой-либо базе данных журнала аудита.Получить динамический объект в потребителе MassTransit

Тем не менее, у потребителя сообщения передаются в этот интерфейс, поэтому мы получаем пустой объект.

Нам действительно нужно получить «динамический» или ухватиться за тело сообщения, чтобы мы могли отправить его в базу данных аудита «как есть», так как наша база данных может сохранять документы JSON. Но мы не можем видеть, как мы можем получить тело сообщения как JSON из контекста. Это вообще возможно?

ответ

4

Если вы действительно хотите быть эффективными, вы можете сохранить своего потребителя с помощью интерфейса, каким он есть сегодня, но затем у вашего потребителя получить JToken из контекста сообщений и использовать JToken для сохранения JSON сообщение. Таким образом, вашему потребителю не нужно знать каждый тип объекта и не иметь сборки для этого типа объекта.

public async Task Consume(ConsumeContext<IEvent> context) 
{ 
    ConsumeContext<JToken> jsonContext; 
    if(context.TryGetMessage(out jsonContext)) 
    { 
     _eventStore.Save(jsonContext.Message); // the JToken 
    } 
} 
+0

Отлично, он работает ust по мере необходимости, спасибо! –

 Смежные вопросы

  • Нет связанных вопросов^_^