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")); }
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")); }