public void Success() { // Update Job: Add Message Turbine.Consumer.Contract.Behaviors.IConsumerContext ctx = Turbine.Consumer.AppUtility.GetConsumerContext(); JobStateChange msg = new JobStateChange(); msg.JobId = job.Id; msg.State = "success"; SimpleMessageConnect.Send(msg); }
public void Warning(string p) { // Update Job: Add Message Turbine.Consumer.Contract.Behaviors.IConsumerContext ctx = Turbine.Consumer.AppUtility.GetConsumerContext(); JobStateChange msg = new JobStateChange(); msg.JobId = job.Id; msg.State = "warning"; msg.Message = p; SimpleMessageConnect.Send(msg); }
public void Message(string s) { // Update Job: Add Message Turbine.Consumer.Contract.Behaviors.IConsumerContext ctx = Turbine.Consumer.AppUtility.GetConsumerContext(); var msg = new JobAddMessage(); msg.Id = Guid.NewGuid(); msg.Message = s; msg.Timestamp = DateTime.UtcNow; msg.JobId = job.Id; SimpleMessageConnect.Send(msg); }
public Turbine.Data.Contract.Behaviors.IProcess Setup() { // Update Job: Add Message Turbine.Consumer.Contract.Behaviors.IConsumerContext ctx = Turbine.Consumer.AppUtility.GetConsumerContext(); JobStateChange msg = new JobStateChange(); msg.JobId = job.Id; msg.State = "setup"; SimpleMessageConnect.Send(msg); // NOTE: Purpose is to delete message from submission queue after it's been 'claimed' setupCallbackCheck(setupCallback(setupCBRequest)); return(new Process(job.Id)); }
public void AddStdout(string data) { Turbine.Consumer.Contract.Behaviors.IConsumerContext ctx = Turbine.Consumer.AppUtility.GetConsumerContext(); //var msg = AddStdoutMessage(jobid, ctx.Id, data); }
/// <summary> /// ReceiveRegistration: Response occurs on a dedicated queue so all messages not /// conforming to expected result are deleted and ignored. /// </summary> /// <param name="registerRequest"></param> /// <returns></returns> internal static RegistrationInfo ReceiveRegistration(RPCEnvelope registerRequest) { Turbine.Consumer.Contract.Behaviors.IConsumerContext ctx = Turbine.Consumer.AppUtility.GetConsumerContext(); IAWSContext awsCtx = Turbine.Consumer.AWS.AppUtility.GetContext(); var queue = Amazon.AWSClientFactory.CreateAmazonSQSClient( awsCtx.AccessKey, awsCtx.SecretKey, new Amazon.SQS.AmazonSQSConfig().WithServiceURL(awsCtx.Region) ); Amazon.SQS.Model.ReceiveMessageResponse receiveMsgResponse; var entries = new List <Amazon.SQS.Model.DeleteMessageBatchRequestEntry>(); // NOTE: Should only be 1 message on queue, but grab 'all' and delete 'all'. do { Debug.WriteLine(String.Format("Register: Poll Queue {0} for response", registerRequest.ResponseQueueUrl), registerRequest.Operation); receiveMsgResponse = queue.ReceiveMessage(new Amazon.SQS.Model.ReceiveMessageRequest() .WithWaitTimeSeconds(20) .WithMaxNumberOfMessages(10) .WithQueueUrl(registerRequest.ResponseQueueUrl)); } while (receiveMsgResponse.IsSetReceiveMessageResult() == false || receiveMsgResponse.ReceiveMessageResult.IsSetMessage() == false); // Response Message Should Have ResponseQueue & SNS Topic List <Amazon.SQS.Model.Message> msgResultMsg = receiveMsgResponse.ReceiveMessageResult.Message; Debug.WriteLine(String.Format("Count {0} Messages found", msgResultMsg.Count), registerRequest.Operation); if (msgResultMsg.Count == 0) { return(null); } RegistrationInfo regInfo = null; //Dictionary<string, Object> d; // NOTE: Very inefficient, double parsing etc. // Consider typing at the RPCEnvelope level foreach (Amazon.SQS.Model.Message smsg in msgResultMsg) { Debug.WriteLine(String.Format("Messages found {0}", smsg.Body), registerRequest.Operation); entries.Add(new Amazon.SQS.Model.DeleteMessageBatchRequestEntry() .WithId(smsg.MessageId) .WithReceiptHandle(smsg.ReceiptHandle)); RPCEnvelope registerResponse = null; JToken token = JObject.Parse(smsg.Body); JToken jmsg = token.SelectToken("Message"); try { registerResponse = JsonConvert.DeserializeObject <RPCEnvelope>(smsg.Body); //d = JsonConvert.DeserializeObject<Dictionary<string, Object>>(jmsg.ToString()); } catch (Exception ex) { Debug.WriteLine(String.Format("RPCEnvelope ignore exception deserializing: {0}", ex), registerRequest.Operation); continue; } //ack = (Turbine.Orchestrator.AWS.Data.Contract.Messages.RegistrationInfo)rsp.Message; var serializer = new Newtonsoft.Json.JsonSerializer(); Newtonsoft.Json.JsonReader reader = jmsg.CreateReader(); //var content = d["Message"].ToString(); var content = jmsg.ToString(); try { regInfo = JsonConvert.DeserializeObject <RegistrationInfo>(content); } catch (Exception ex) { Debug.WriteLine(String.Format("RegistrationInfo ignore exception deserializing: {0}", ex), registerRequest.Operation); continue; } //registerRequest.Message = regInfo; if (regInfo.RequestId != registerRequest.Message.Id) { var s = String.Format("Mismatch Request-Response Id : {0} != {1}", regInfo.Id, registerRequest.Message.Id); Debug.WriteLine(s, regInfo.GetType().Name); continue; } break; } if (entries.Count > 0) { // Delete all messages found var delMsgBatchRsp = queue.DeleteMessageBatch( new Amazon.SQS.Model.DeleteMessageBatchRequest() .WithQueueUrl(registerRequest.ResponseQueueUrl) .WithEntries(entries.ToArray <Amazon.SQS.Model.DeleteMessageBatchRequestEntry>())); } return(regInfo); }