public ActionResult SendV2()
        {
            var fulfilmentType = FulfilmentType.Email;

            Enum.TryParse <FulfilmentType>(Request.Form["fulfilmentType"], out fulfilmentType);

            var client = FulfilmentClientFactory.GetApiClient(fulfilmentType);

            try
            {
                client.Send("customer-address");
            }
            catch (WebException ex)
            {
                var response = ex.Response as HttpWebResponse;
                switch (response.StatusCode)
                {
                case HttpStatusCode.ServiceUnavailable:
                    //transient, try again:
                    client.Send("customer-address");
                    break;

                case HttpStatusCode.BadRequest:
                    //permanent:
                    break;
                }
            }

            ViewData.Add("fulfilmentType", fulfilmentType);
            return(View("Index"));
        }
Ejemplo n.º 2
0
        private static void Handle(Header header, ZFrame bodyFrame)
        {
            //TODO - really we'd have a message handler factory:
            if (header.BodyType == typeof(SendFulfilmentCommand).Name)
            {
                var command = JsonConvert.DeserializeObject <SendFulfilmentCommand>(bodyFrame.ReadString());
                var client  = FulfilmentClientFactory.GetApiClient(command.FulfilmentType);
                try
                {
                    client.Send(command.Address);
                    Console.WriteLine("*** Sent fulfilment, type: {0}, to address: {1}", command.FulfilmentType, command.Address);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("*** Fulfilment failed, resending message");

                    var queueAddress = Config.Get("Queues.Fulfilment.Address");
                    header.HandledCount++;
                    header.LastExceptionMessage = ex.Message;

                    var messageFrames = new List <ZFrame>();
                    messageFrames.Add(new ZFrame(JsonConvert.SerializeObject(header)));
                    messageFrames.Add(bodyFrame);

                    using (var context = new ZContext())
                        using (var sender = new ZSocket(context, ZSocketType.PUSH))
                        {
                            sender.Connect(queueAddress);
                            sender.Send(new ZMessage(messageFrames));
                        }
                }
            }
        }
        public ActionResult SendV1()
        {
            var fulfilmentType = FulfilmentType.Email;

            Enum.TryParse <FulfilmentType>(Request.Form["fulfilmentType"], out fulfilmentType);

            var client = FulfilmentClientFactory.GetApiClient(fulfilmentType);

            client.Send("customer-address");

            ViewData.Add("fulfilmentType", fulfilmentType);
            return(View("Index"));
        }