Exemplo n.º 1
0
        private void CallHandler(LiteBusMessage liteBusMessage)
        {
            var messageType = Type.GetType($"{liteBusMessage.ObjectType}, {liteBusMessage.ObjectAssembly}");
            var message     = Convert.ChangeType(_serializer.Deserialize(liteBusMessage.Message, messageType), messageType);
            var handlers    = GetAllHandlerImplementations(message).ToList();

            if (!handlers.Any())
            {
                throw new InvalidOperationException($"Could not locate handler for message type {messageType}");
            }

            foreach (var handler in handlers)
            {
                var handleMethod = handler.Key.GetRuntimeMethod("Handle", new Type[] { message.GetType() });
                handleMethod.Invoke(handler.Value, new object[] { message });
            }
        }
Exemplo n.º 2
0
        public void Send <T>(T message, string queue)
        {
            var liteBusMessage = new LiteBusMessage
            {
                OriginatingEndpoint = Assembly.GetCallingAssembly().GetName().Name,
                DestinationEndpoint = queue,
                TimeSent            = DateTime.Now,
                ObjectType          = typeof(T).ToString(),
                ObjectAssembly      = typeof(T).Assembly.ToString(),
                Message             = _serializer.Serialize(message)
            };

            using (var q = new MessageQueue(_qPathProvider.GetPath(queue)))
            {
                q.Formatter = new XmlMessageFormatter(new Type[] { typeof(string) });
                q.Send(_serializer.Serialize(liteBusMessage));
            }
        }