public TmMqMessage(ITmMqMessage copy) { #region param checks if (copy == null) { throw new ArgumentNullException("copy"); } #endregion MessageId = copy.MessageId; Properties = new DynamicDictionary(copy.Properties); Errors = new List <TmMqMessageError>(copy.Errors); TimeStamp = copy.TimeStamp; DeliveredAt = copy.DeliveredAt; CorrelationId = copy.CorrelationId; RetryCount = copy.RetryCount; DeliveryCount = copy.DeliveryCount; Type = copy.Type; OriginalQueue = copy.OriginalQueue; ReplyTo = copy.ReplyTo; Text = copy.Text; ExpireAt = copy.ExpireAt; HoldUntil = copy.HoldUntil; }
public void TestStartReceive() { using (var recv = new TmMqReceiver("TestStartReceive")) { ITmMqMessage recieved = null; using (var evt = new ManualResetEvent(false)) { using (var send = new TmMqSender("TestStartReceive")) { recv.StartReceiving(1, m => { recieved = m; evt.Set(); }); var msg = new TmMqMessage(); msg.Text = "msg1"; send.Send(msg); } evt.WaitOne(500); } Assert.IsNotNull(recieved); Assert.AreEqual("msg1", recieved.Text); } }
public TmMqMessage( ITmMqMessage copy ) { #region param checks if( copy == null ) { throw new ArgumentNullException( "copy" ); } #endregion MessageId = copy.MessageId; Properties = new DynamicDictionary( copy.Properties ); Errors = new List<TmMqMessageError>( copy.Errors ); TimeStamp = copy.TimeStamp; DeliveredAt = copy.DeliveredAt; CorrelationId = copy.CorrelationId; RetryCount = copy.RetryCount; DeliveryCount = copy.DeliveryCount; Type = copy.Type; OriginalQueue = copy.OriginalQueue; ReplyTo = copy.ReplyTo; Text = copy.Text; ExpireAt = copy.ExpireAt; HoldUntil = copy.HoldUntil; }
public void TestProperties() { using (var send = new TmMqSender("TestProperties")) { var msg = new TmMqMessage(); msg.Text = "msg1"; msg.Properties.String = "string"; msg.Properties.Int = 1234; msg.Properties.Complex = new Complex { Prop1 = 1, PropD = 123.456, PropS = "abcdefg" }; send.Send(msg); } using (var recv = new TmMqReceiver("TestProperties")) { var count = recv.CountPending(); Assert.AreEqual(1, count, "Should be one pending item"); ITmMqMessage recieved = recv.Receive().FirstOrDefault(); Assert.IsNotNull(recieved); Assert.AreEqual("msg1", recieved.Text); Assert.AreEqual("string", recieved.Properties.String, "Invalid recieved.Properties.String"); Assert.AreEqual(1234, recieved.Properties.Int, "Invalid recieved.Properties.Int"); Assert.IsInstanceOfType(recieved.Properties.Complex, typeof(Complex)); Assert.AreEqual(1, recieved.Properties.Complex.Prop1, "Invalid recieved.Properties.Complex.Prop1"); Assert.AreEqual(123.456D, recieved.Properties.Complex.PropD, "Invalid recieved.Properties.Complex.PropD"); Assert.AreEqual("abcdefg", recieved.Properties.Complex.PropS, "Invalid recieved.Properties.Complex.PropS"); } }
protected void DistributestringMessage(string pubsubQueueName, ITmMqMessage message, bool safeSend) { #region param checks if (pubsubQueueName == null) { throw new ArgumentNullException("pubsubQueueName"); } if (message == null) { throw new ArgumentNullException("message"); } #endregion ConcurrentDictionary <Guid, DateTime> subscribers; if (g_pubsubQueues.TryGetValue(pubsubQueueName, out subscribers)) { foreach (var subscriber in subscribers.Keys) { var col = GetCollection("pubsub_" + pubsubQueueName + "_" + subscriber); col.Insert(message, safeSend ? WriteConcern.Acknowledged : WriteConcern.Unacknowledged); } } }
public void Fail(ITmMqMessage msg, Exception exception) { MessagesCollection.Update( Query.EQ("MessageId", msg.MessageId), Update.Inc("RetryCount", 1)); MessagesCollection.Update( Query.EQ("MessageId", msg.MessageId), Update.PushWrapped("Errors", new TmMqMessageError(exception.ToString()))); }
public virtual void Send( ITmMqMessage message, bool safeSend ) { #region param checks if( message == null ) { throw new ArgumentNullException( "message" ); } #endregion m_messagesCollection.Insert( message, safeSend ? SafeMode.True : SafeMode.False ); }
public virtual void Send(ITmMqMessage message, bool safeSend) { #region param checks if (message == null) { throw new ArgumentNullException("message"); } #endregion m_messagesCollection.Insert(message, safeSend ? WriteConcern.Acknowledged : WriteConcern.Unacknowledged); }
public virtual void Send( ITmMqMessage message, bool safeSend ) { #region param checks if( message == null ) { throw new ArgumentNullException( "message" ); } #endregion m_messagesCollection.Insert( message, safeSend ? WriteConcern.Acknowledged : WriteConcern.Unacknowledged ); }
public override ITmMqMessage Send( ITmMqMessage message ) { #region param checks if( message == null ) { throw new ArgumentNullException( "message" ); } #endregion DistributestringMessage( MongoDbQueueName, message, true ); return message; }
public virtual ITmMqMessage Send( ITmMqMessage message ) { #region param checks if( message == null ) { throw new ArgumentNullException( "message" ); } #endregion m_messagesCollection.Insert( message, WriteConcern.Acknowledged ); return message; }
public virtual ITmMqMessage Send( ITmMqMessage message ) { #region param checks if( message == null ) { throw new ArgumentNullException( "message" ); } #endregion m_messagesCollection.Insert( message, SafeMode.True ); return message; }
public virtual ITmMqMessage Send(ITmMqMessage message) { #region param checks if (message == null) { throw new ArgumentNullException("message"); } #endregion m_messagesCollection.Insert(message, WriteConcern.Acknowledged); return(message); }
public override ITmMqMessage Send(ITmMqMessage message) { #region param checks if (message == null) { throw new ArgumentNullException("message"); } #endregion DistributestringMessage(MongoDbQueueName, message, true); return(message); }
public void TestErrorQueue() { using (var send = new TmMqSender("TestErrorQueue")) { var msg = new TmMqMessage(); msg.Text = "msg1 - fail"; send.Send(msg); } using (var recv = new TmMqReceiver("TestErrorQueue")) { int fail = 0; using (var evt = new ManualResetEvent(false)) { recv.StartReceiving(1, msg => { if (fail++ == 2) { evt.Set(); } throw new Exception("fail "); }); evt.WaitOne(5000); } } using (var recv = new TmMqReceiver("error")) { ITmMqMessage errorMsg = null; using (var evt = new ManualResetEvent(false)) { recv.StartReceiving(1, msg => { errorMsg = msg; evt.Set(); }); evt.WaitOne(5000); } Assert.IsNotNull(errorMsg); Assert.AreEqual("msg1 - fail", errorMsg.Text); Assert.AreEqual("TestErrorQueue", errorMsg.OriginalQueue); } }
public void TestSendAfterReceiveStarted() { using (var recv = new TmMqReceiver("TestSendAfterReceiveStarted")) { using (var send = new TmMqSender("TestSendAfterReceiveStarted")) { var msg = new TmMqMessage(); msg.Text = "msg1"; send.Send(msg); } var count = recv.CountPending(); Assert.AreEqual(1, count, "Should be one pending item"); ITmMqMessage recieved = recv.Receive().FirstOrDefault(); Assert.IsNotNull(recieved); Assert.AreEqual("msg1", recieved.Text); } }
public void TestRedeliver() { using (var send = new TmMqSender("TestRedeliver")) { var msg = new TmMqMessage(); msg.Text = "msg1"; send.Send(msg); } using (var recv = new TmMqReceiver("TestRedeliver")) { var count = recv.CountPending(); Assert.AreEqual(1, count, "Should be one pending item"); ITmMqMessage recieved = null; int retry = 0; using (var evt = new ManualResetEvent(false)) { recv.StartReceiving(1, msg => { if (retry++ == 0) { throw new Exception("fail " + retry); } recieved = msg; evt.Set(); }); evt.WaitOne(5000); } Assert.IsNotNull(recieved); Assert.AreEqual("msg1", recieved.Text); Assert.AreEqual(1, recieved.Errors.Count, "An error should have been logged"); } }
public void Acknowledge( ITmMqMessage msg ) { MessagesCollection.Remove( Query.EQ( "MessageId", msg.MessageId ), WriteConcern.Acknowledged ); }
public void Acknowledge( ITmMqMessage msg ) { MessagesCollection.Remove( Query.EQ( "MessageId", msg.MessageId ), SafeMode.False ); }
public void Fail( ITmMqMessage msg, Exception exception ) { MessagesCollection.Update( Query.EQ( "MessageId", msg.MessageId ), Update.Inc( "RetryCount", 1 ) ); MessagesCollection.Update( Query.EQ( "MessageId", msg.MessageId ), Update.PushWrapped( "Errors", new TmMqMessageError( exception.ToString() ) ) ); }
protected void DistributestringMessage( string pubsubQueueName, ITmMqMessage message, bool safeSend ) { #region param checks if( pubsubQueueName == null ) { throw new ArgumentNullException( "pubsubQueueName" ); } if( message == null ) { throw new ArgumentNullException( "message" ); } #endregion ConcurrentDictionary<Guid, DateTime> subscribers; if( g_pubsubQueues.TryGetValue( pubsubQueueName, out subscribers ) ) { foreach( var subscriber in subscribers.Keys ) { var col = GetCollection( "pubsub_" + pubsubQueueName + "_" + subscriber ); col.Insert( message, safeSend ? WriteConcern.Acknowledged : WriteConcern.Unacknowledged ); } } }
public override void Send(ITmMqMessage message, bool safeSend) { DistributestringMessage(MongoDbQueueName, message, safeSend); }
public override void Send( ITmMqMessage message, bool safeSend ) { DistributestringMessage( MongoDbQueueName, message, safeSend ); }
public void Acknowledge(ITmMqMessage msg) { MessagesCollection.Remove(Query.EQ("MessageId", msg.MessageId), WriteConcern.Acknowledged); }