This is an automated email from the ASF dual-hosted git repository.

lizhanhui pushed a commit to branch csharp_dev
in repository https://gitbox.apache.org/repos/asf/rocketmq-clients.git

commit dfb44cf125060edd3c5948cc267fbffd3ca93f69
Author: Zhanhui Li <[email protected]>
AuthorDate: Tue Aug 30 20:55:12 2022 +0800

    Add FIFO/Timed message publishment examples
---
 csharp/examples/Program.cs | 89 ++++++++++++++++++++++++++++++++++++++++------
 1 file changed, 78 insertions(+), 11 deletions(-)

diff --git a/csharp/examples/Program.cs b/csharp/examples/Program.cs
index 9f01e29..e0d3851 100644
--- a/csharp/examples/Program.cs
+++ b/csharp/examples/Program.cs
@@ -23,17 +23,63 @@ namespace examples
 {
     class Program
     {
-        static async Task Main(string[] args)
+        private const string accessUrl = 
"rmq-cn-tl32uly8x0n.cn-hangzhou.rmq.aliyuncs.com:8080";
+        private const string standardTopic = "sdk_standard";
+        private const string fifoTopic = "sdk_fifo";
+        private const string timedTopic = "sdk_timed";
+        private const string transactionalTopic = "sdk_transactional";
+        
+        private static async Task<SendReceipt> SendStandardMessage(Producer 
producer)
         {
-            string accessUrl = 
"rmq-cn-tl32uly8x0n.cn-hangzhou.rmq.aliyuncs.com:8080";
-            var topic = "sdk_standard";
-            var credentialsProvider = new ConfigFileCredentialsProvider();
-            var producer = new Producer(accessUrl);
-            producer.CredentialsProvider = credentialsProvider;
-            producer.AddTopicOfInterest(topic);
+            byte[] body = new byte[1024];
+            Array.Fill(body, (byte)'x');
+            // Associate the message with one or multiple keys
+            var keys = new List<string>
+            {
+                "k1",
+                "k2"
+            };
             
-            await producer.Start();
+            var msg = new Message(standardTopic, body)
+            {
+                // Tag the massage. A message has at most one tag.
+                Tag = "Tag-0",
+                Keys = keys
+            };
+            
+            msg.Keys = keys;
+
+            return await producer.Send(msg);
+        }
+
+        private static async Task<SendReceipt> SendFifoMessage(Producer 
producer)
+        {
+            byte[] body = new byte[1024];
+            Array.Fill(body, (byte)'x');
+            // Associate the message with one or multiple keys
+            var keys = new List<string>
+            {
+                "k1",
+                "k2"
+            };
+            
+            var msg = new Message(fifoTopic, body)
+            {
+                // Tag the massage. A message has at most one tag.
+                Tag = "Tag-0",
+                Keys = keys
+            };
+            
+            msg.Keys = keys;
+
+            // Messages of the same message-group will be published orderly.
+            msg.MessageGroup = "SampleMessageGroup";
 
+            return await producer.Send(msg);
+        }
+
+        private static async Task<SendReceipt> SendTimedMessage(Producer 
producer)
+        {
             byte[] body = new byte[1024];
             Array.Fill(body, (byte)'x');
             // Associate the message with one or multiple keys
@@ -43,7 +89,7 @@ namespace examples
                 "k2"
             };
             
-            var msg = new Message(topic, body)
+            var msg = new Message(timedTopic, body)
             {
                 // Tag the massage. A message has at most one tag.
                 Tag = "Tag-0",
@@ -51,10 +97,31 @@ namespace examples
             };
             
             msg.Keys = keys;
+            msg.DeliveryTimestamp = DateTime.UtcNow + TimeSpan.FromSeconds(30);
+            return await producer.Send(msg);
+        }
+        
+        static async Task Main(string[] args)
+        {
+            var credentialsProvider = new ConfigFileCredentialsProvider();
+            var producer = new Producer(accessUrl);
+            producer.CredentialsProvider = credentialsProvider;
+            producer.AddTopicOfInterest(standardTopic);
+            producer.AddTopicOfInterest(fifoTopic);
+            producer.AddTopicOfInterest(timedTopic);
+            producer.AddTopicOfInterest(transactionalTopic);
+
+            await producer.Start();
+
+            var sendReceiptOfStandardMessage = await 
SendStandardMessage(producer);
+            Console.WriteLine($"Standard message-id: 
{sendReceiptOfStandardMessage.MessageId}");
 
-            var sendReceipt = await producer.Send(msg);
-            Console.WriteLine(sendReceipt.MessageId);
+            var sendReceiptOfFifoMessage = await SendFifoMessage(producer);
+            Console.WriteLine($"FIFO message-id: 
{sendReceiptOfFifoMessage.MessageId}");
             
+            var sendReceiptOfTimedMessage = await SendTimedMessage(producer);
+            Console.WriteLine($"Timed message-id: 
{sendReceiptOfTimedMessage.MessageId}");
+
             Console.ReadKey();
         }
     }

Reply via email to