Beispiel #1
0
        private static void Transactional_Queue_Resend_to_New_Queue()
        {
            var queue       = new KubeMQ.SDK.csharp.Queue.Queue("QueueName", "ClientID", "localhost:50000", null, tempAuthToken);
            var transaction = queue.CreateTransaction();

            // get message from the queue with visibility of 5 seconds and wait timeout of 10 seconds
            KubeMQ.SDK.csharp.Queue.Stream.TransactionMessagesResponse resRec;
            try {
                resRec = transaction.Receive(5, 10);
                if (resRec.IsError)
                {
                    Console.WriteLine($"Message dequeue error, error:{resRec.Error}");
                    return;
                }
                Console.WriteLine($"MessageID: {resRec.Message.MessageID}, Body:{KubeMQ.SDK.csharp.Tools.Converter.FromByteArray(resRec.Message.Body)}");
            } catch (System.Exception ex) {
                Console.WriteLine($"Message dequeue error, error:{ex.Message}");
                return;
            }

            Console.WriteLine("Resend to new queue");
            try {
                var resResend = transaction.Resend("new-queue");
                if (resResend.IsError)
                {
                    Console.WriteLine($"Message Resend error, error:{resResend.Error}");
                    return;
                }
            } catch (System.Exception ex) {
                Console.WriteLine($"Message Resend error, error:{ex.Message}");
                return;
            }

            Console.WriteLine("Done");
        }
Beispiel #2
0
        static void Main()
        {
            Console.WriteLine("[DemoPoll]KubeMQ Queue pattern long polling");
            Console.WriteLine($"[DemoPoll] ClientID:{ClientID}");
            Console.WriteLine($"[DemoPoll] QueueName:{QueueName}");
            Console.WriteLine($"[DemoPoll] KubeMQServerAddress:{KubeMQServerAddress}");

            KubeMQ.SDK.csharp.Queue.Queue queue = CreateQueue();
            if (queue == null)
            {
                Console.ReadLine();
            }



            while (true)
            {
                if (queue == null)
                {
                    Thread.Sleep(1000);
                    queue = CreateQueue();

                    continue;
                }
                var transaction = queue.CreateTransaction();

                if (transaction.InTransaction == true)
                {
                    Console.WriteLine($"[DemoPoll][Tran]Transaction Context is still busy, loop again");
                    continue;
                }
                Console.WriteLine($"[DemoPoll][Tran]Transaction ready and listening");
                try
                {
                    TransactionMessagesResponse ms = transaction.Receive((int)new TimeSpan(1, 0, 0).TotalSeconds, (int)new TimeSpan(0, 0, 5).TotalSeconds);

                    if (ms.IsError)
                    {
                        Console.WriteLine(ms.QueueErrors == KubemqQueueErrors.ErrNoNewMessageQueue
                            ? $"DemoPoll][Tran]no new message found"
                            : $"[DemoPoll][Tran]message dequeue error, error:{ms.Error}");
                        continue;
                    }

                    HandleMSG(ms, transaction);
                }
                catch (RpcException ex)
                {
                    Console.WriteLine($"[DemoPoll][Tran]RPC error, error:{ex.Message}");

                    queue = CreateQueue();
                }
                transaction.Close();
                Thread.Sleep(1);
            }
        }
Beispiel #3
0
        private static void Transactional_Queue_Extend_Visibility()
        {
            var queue       = new KubeMQ.SDK.csharp.Queue.Queue("QueueName", "ClientID", "localhost:50000", null, tempAuthToken);
            var transaction = queue.CreateTransaction();

            // get message from the queue with visibility of 5 seconds and wait timeout of 10 seconds
            KubeMQ.SDK.csharp.Queue.Stream.TransactionMessagesResponse resRec;
            try {
                resRec = transaction.Receive(5, 10);
                if (resRec.IsError)
                {
                    Console.WriteLine($"Message dequeue error, error:{resRec.Error}");
                    return;
                }
                Console.WriteLine($"MessageID: {resRec.Message.MessageID}, Body:{KubeMQ.SDK.csharp.Tools.Converter.FromByteArray(resRec.Message.Body)}");
            } catch (System.Exception ex) {
                Console.WriteLine($"Message dequeue error, error:{ex.Message}");
                return;
            }

            Console.WriteLine("Work for 1 seconds");
            Thread.Sleep(1000);
            Console.WriteLine("Need more time to process, extend visibility for more 3 seconds");
            try {
                var resExt = transaction.ExtendVisibility(3);
                if (resExt.IsError)
                {
                    Console.WriteLine($"Message ExtendVisibility error, error:{resExt.Error}");
                    return;
                }
            } catch (System.Exception ex) {
                Console.WriteLine($"Message ExtendVisibility error, error:{ex.Message}");
            }

            Console.WriteLine("Approved. work for 2.5 seconds");
            Thread.Sleep(2500);
            Console.WriteLine("Work done... ack the message");
            try {
                var resAck = transaction.AckMessage(resRec.Message.Attributes.Sequence);
                if (resAck.IsError)
                {
                    Console.WriteLine($"Ack message error:{resAck.Error}");
                }
                Console.WriteLine("Ack done");
            } catch (System.Exception ex) {
                Console.WriteLine($"Ack message error:{ex.Message}");
            }
        }
Beispiel #4
0
        private static void Transactional_Queue_Ack()
        {
            var queue       = new KubeMQ.SDK.csharp.Queue.Queue("QueueName", "ClientID", "localhost:50000", null, tempAuthToken);
            var transaction = queue.CreateTransaction();

            // get message from the queue with visibility of 10 seconds and wait timeout of 10 seconds
            KubeMQ.SDK.csharp.Queue.Stream.TransactionMessagesResponse resRec;
            try {
                resRec = transaction.Receive(10, 10);
                if (resRec.IsError)
                {
                    Console.WriteLine($"Message dequeue error, error:{resRec.Error}");
                    return;
                }
                Console.WriteLine($"MessageID: {resRec.Message.MessageID}, Body:{KubeMQ.SDK.csharp.Tools.Converter.FromByteArray(resRec.Message.Body)}");
            } catch (System.Exception ex) {
                Console.WriteLine($"Message dequeue error, error:{ex.Message}");
                return;
            }
            Console.WriteLine("Doing some work.....");
            Thread.Sleep(1000);
            Console.WriteLine("Done, ack the message");

            try {
                var resAck = transaction.AckMessage(resRec.Message.Attributes.Sequence);
                if (resAck.IsError)
                {
                    Console.WriteLine($"Ack message error:{resAck.Error}");
                    return;
                }
            } catch (System.Exception ex) {
                Console.WriteLine($"Ack message error:{ex.Message}");
                return;
            }

            Console.WriteLine("Checking for next message");
            try {
                resRec = transaction.Receive(10, 1);
                if (resRec.IsError)
                {
                    Console.WriteLine($"Message dequeue error, error:{resRec.Error}");
                    return;
                }
            } catch (System.Exception ex) {
                Console.WriteLine($"Message dequeue error, error:{ex.Message}");
                return;
            }
        }
Beispiel #5
0
        private static void Transactional_Queue_Resend_Modified_Message()
        {
            var queue       = new KubeMQ.SDK.csharp.Queue.Queue("QueueName", "ClientID", "localhost:50000", null, tempAuthToken);
            var transaction = queue.CreateTransaction();

            // get message from the queue with visibility of 5 seconds and wait timeout of 10 seconds
            KubeMQ.SDK.csharp.Queue.Stream.TransactionMessagesResponse resRec;
            try {
                resRec = transaction.Receive(3, 5);
                if (resRec.IsError)
                {
                    Console.WriteLine($"Message dequeue error, error:{resRec.Error}");
                    return;
                }
            } catch (System.Exception ex) {
                Console.WriteLine($"Message dequeue error, error:{ex.Message}");
                return;
            }

            Console.WriteLine($"MessageID: {resRec.Message.MessageID}, Body:{KubeMQ.SDK.csharp.Tools.Converter.FromByteArray(resRec.Message.Body)}");
            var modMsg = resRec.Message;

            modMsg.Queue    = "receiverB";
            modMsg.Metadata = "new metadata";
            try {
                var resMod = transaction.Modify(modMsg);
                if (resMod.IsError)
                {
                    Console.WriteLine($"Message Modify error, error:{resMod.Error}");
                    return;
                }
            } catch (System.Exception ex) {
                Console.WriteLine($"Message Modify error, error:{ex.Message}");
                return;
            }
        }