Stas_P

Batch event processing

Feb 21st, 2013
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 0.82 KB | None | 0 0
  1. protected void DoConsume(T batchMsg)
  2.         {
  3.             EnsureThat.IsNotNull(batchMsg);
  4.             IEnumerable<IMessage> msgs = from e in batchMsg.Batch select (IMessage) JsonConvert.DeserializeObject(e.Data, _serializerSettings);
  5.  
  6.             foreach (IMessage msg in msgs)
  7.             {
  8.                 Type eType = msg.GetType();
  9.                 IMessage c = msg;
  10.                 IEnumerable<Type> consumerTypes = from t in _consumers
  11.                                                   from i in t.GetInterfaces()
  12.                                                   where i.IsGenericType && i.GetGenericArguments()[0] == eType
  13.                                                   select t;
  14.  
  15.                 foreach (Type consumerType in consumerTypes)
  16.                 {
  17.                     object consumer = _scope.Resolve(consumerType);
  18.                     MethodInfo minfo = consumerType.GetMethod("Consume", new[] {eType});
  19.                     minfo.Invoke(consumer, new[] {c});
  20.                 }
  21.             }
  22.         }
Advertisement
Add Comment
Please, Sign In to add comment