Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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;
        }
Exemplo n.º 4
0
        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");
            }
        }
Exemplo n.º 5
0
        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);
                }
            }
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 15
0
        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);
            }
        }
Exemplo n.º 16
0
        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);
            }
        }
Exemplo n.º 17
0
        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");
            }
        }
Exemplo n.º 18
0
 public void Acknowledge( ITmMqMessage msg )
 {
     MessagesCollection.Remove( Query.EQ( "MessageId", msg.MessageId ), WriteConcern.Acknowledged );
 }
Exemplo n.º 19
0
 public void Acknowledge( ITmMqMessage msg )
 {
     MessagesCollection.Remove( Query.EQ( "MessageId", msg.MessageId ), SafeMode.False );
 }
Exemplo n.º 20
0
        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() ) ) );
        }
Exemplo n.º 21
0
        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 );
 }
Exemplo n.º 24
0
 public void Acknowledge(ITmMqMessage msg)
 {
     MessagesCollection.Remove(Query.EQ("MessageId", msg.MessageId), WriteConcern.Acknowledged);
 }