Exemplo n.º 1
0
        public void SerializeMessageBus()
        {
            var jsonDataContractSerializer = new JsonDataContractSerializer();
            var callerContexts             = new Stack <CallerContext>();

            callerContexts.Push(new CallerContext {
                Identification = new Identification()
                {
                    Id = "IdTest", Type = "TypeTest"
                }
            });
            var messageBus = new MessageBus
            {
                Body   = "Test",
                Header = { BodyType = "Un tipo de body cualquiera me vale.", CreatedAt = new DateTime(2010, 10, 10), CallStack = callerContexts }
            };

            var serialize = jsonDataContractSerializer.Serialize(messageBus);

            var bytes        = MessageBusParser.ToBytes(messageBus);
            var routerHeader = MessageBusParser.GetHeaderFromBytes(bytes);
            var message      = MessageBusParser.GetMessageFromBytes(bytes);

            Assert.AreEqual(serialize, message);
            Assert.AreEqual("IdTest", routerHeader.Identification.Id);
            Assert.AreEqual("TypeTest", routerHeader.Identification.Type);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Processes the received message.
        /// </summary>
        /// <param name="serializedMessage">The serialized message.</param>
        protected override void ProcessReceivedMessage(byte[] serializedMessage)
        {
            var routerHeader = MessageBusParser.GetHeaderFromBytes(serializedMessage);

            InvokeOnMessage(serializedMessage, serializedMessage, routerHeader);
            InvokeReceivedMessage(routerHeader.BodyType, serializedMessage.Length, routerHeader.CreatedAt);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Sends the specified MSG.
        /// </summary>
        /// <param name="message">The message.</param>
        /// <param name="priority">The priority.</param>
        /// <returns>Bytes Sent</returns>
        public override int Send(IMessage message, int priority)
        {
            try
            {
                var messageBus = MessageBusFactory.Create(_identification, message, DataContractSerializer);
                messageBus.Header.Priority = priority;

                var callerContext = CallerContextFactory.Create(_identification);
                messageBus.Header.CallStack.Push(callerContext);

                var serializedMessage = MessageBusParser.ToBytes(messageBus);
                SenderEndPoint.Send(serializedMessage, priority);
                InvokeSentMessage(messageBus.Header.BodyType, serializedMessage.Length);
                return(serializedMessage.Length);
            }
            catch (Exception ex)
            {
                Logger.Error("OutputGateway - Error Send Message", ex);
                throw;
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Sends the specified message.
        /// </summary>
        /// <param name="message">The message.</param>
        /// <param name="messageInfo">The message info.</param>
        /// <returns></returns>
        public override int Send(IMessage message, IMessageInfo messageInfo)
        {
            try
            {
                var messageBus = MessageBusFactory.Create(_identification, message, DataContractSerializer);

                messageBus.Header.Priority    = messageInfo.Header.Priority;
                messageBus.Header.CallStack   = messageInfo.Header.CallStack;
                messageBus.Header.CallContext = messageInfo.CurrentCallContext;

                if (!messageInfo.IsReply)
                {
                    var callerContext = CallerContextFactory.Create(_identification, messageInfo.CurrentSession);
                    messageBus.Header.CallStack.Push(callerContext);
                }
                else
                {
                    messageBus.Header.Type = MessageBusType.Reply;
                }

                var serializedMessage = MessageBusParser.ToBytes(messageBus);

                if (!messageInfo.IsReply)
                {
                    messageBus.Header.CallStack.Pop();
                }

                SenderEndPoint.Send(serializedMessage, messageInfo.Header.Priority);
                InvokeSentMessage(messageBus.Header.BodyType, serializedMessage.Length);
                return(serializedMessage.Length);
            }
            catch (Exception ex)
            {
                Logger.Error("OutputGateway - Error Send Message", ex);
                throw;
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// Processes the received message.
        /// </summary>
        /// <param name="message">The message.</param>
        /// <param name="serializedMessage">The serialized message.</param>
        protected override void ProcessReceivedMessage(byte[] serializedMessage)
        {
            var message = DataContractSerializer.Deserialize <MessageBus>(MessageBusParser.GetMessageFromBytes(serializedMessage));

            Logger.Debug("OnMessageBusReceived");
            var split = message.Header.BodyType.Split(',');

            if (split.Length < 2)
            {
                Logger.Error(string.Format("El mensaje no tiene el bodytype correcto {0}", serializedMessage));
                return;
            }

            var bodyType     = split[0];
            var assemblyName = split[1];

            var type = TypeFinder.GetType(bodyType, assemblyName);
            var body = MessageBuilder.Instance.CreateInstance(DataContractSerializer, type, message.Body,
                                                              Encoding.GetEncoding(message.Header.EncodingCodePage));

            InvokeOnMessage((TMessage)body, serializedMessage, message.Header);

            InvokeReceivedMessage(message.Header.BodyType, serializedMessage.Length, message.Header.CreatedAt);
        }