private static void Main(string[] args) { string messageId = null; MessageQueue myQueue = new MessageQueue(@".\Private$\CallDispositionQueue"); var result = new ProcessMessageToCubs(); var aknowledge = new MessageAcknowledement(); var messageInTheQueue = new CountMessege(); var pm = new PoisonMessage(); messageInTheQueue.Count(myQueue); messageId = result.ReceiveMessage(); //message acknowledgement. if(messageId != null) { aknowledge.ReceiveAcknowledgment(messageId, @".\Private$\MessageAcknowledgeQueue"); } }
//Receive message from CallDispositionQueue public string ReceiveMessage() { bool valid_Message = false; string returnMessageId = null; Message message = new Message(); //connect to the queue on the local path MessageQueue myQueue = new MessageQueue(@".\Private$\CallDispositionQueue"); myQueue.MessageReadPropertyFilter.CorrelationId = true; //TODO: Message process to Cubs/set a connection. try { myQueue.Formatter = new XmlMessageFormatter(new Type[] { typeof(MSMQ.Contracts.CallDisposition) }); message = myQueue.Peek(TimeSpan.FromSeconds(10.0)); CallDisposition cd = (CallDisposition)message.Body; if (message.Body == (CallDisposition)message.Body) { message = myQueue.Receive(TimeSpan.FromSeconds(10.0)); Console.WriteLine("Message Received."); valid_Message = true; _id = cd.DispositionId; Console.WriteLine("Disposition ID is: {0}", _id); Console.WriteLine("CubsActNum is: {0}", cd.CubsActNum); Console.WriteLine("PhoneNumber is: {0}", cd.PhoneNumber); Console.WriteLine("CallDateStr is: {0}", cd.CallDateStr); Console.WriteLine("CallStartStr is: {0}", cd.CallStartStr); Console.WriteLine("Agent Initials is: {0}", cd.Initials); Console.WriteLine("Logon is: {0}", cd.Logon); Console.WriteLine("CampaignType is: {0}", cd.CampaignType); Console.WriteLine("Action Code is: {0}", cd.ActionCode); } returnMessageId = message.Id; } catch (MessageQueueException e) { Console.WriteLine(e.Message); Console.WriteLine("There is no messages in the queue right now"); } catch (InvalidOperationException ex) { Console.WriteLine(ex.Message); } catch (NullReferenceException nx) { Console.WriteLine(nx.Message); } if (valid_Message) { //update the row in the database when the message is valid. const string query = "DECLARE @TimeStamp DATETIME = GETDATE();" + "UPDATE [CallLogs].[DialConnect].[CallDispositions] " + "SET [SentToCubsDT] = @TimeStamp" + " " + "WHERE [Id] = @DispositionId"; using (SqlConnection conn = new SqlConnection("Data Source=stlbisql-t01;Initial Catalog=CallLogs;Integrated Security=True")) { var sqlcmd = new SqlCommand(query, conn); sqlcmd.Parameters.Add("@DispositionId", SqlDbType.Int); sqlcmd.Parameters["@DispositionId"].Value = _id; try { conn.Open(); sqlcmd.ExecuteNonQuery(); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine("Message Failed to update the SentToCubsDT"); } finally { conn.Close(); } } } else { Console.WriteLine("Message Failed to Process"); PoisonMessage ps = new PoisonMessage(); ps.SentToPoisonMessage(message); } return returnMessageId; }