You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by aa...@apache.org on 2022/12/27 14:05:13 UTC

[rocketmq-clients] 02/03: Align dotnet Producer on BornTimestamp/QueueId with other languages

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

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

commit cd456333b960b6ee4d74572b9959b4ba673f9bb6
Author: colprog <co...@gmail.com>
AuthorDate: Fri Dec 23 03:26:34 2022 +0800

    Align dotnet Producer on BornTimestamp/QueueId with other languages
---
 csharp/rocketmq-client-csharp/Producer.cs | 48 +++++++++++--------------------
 1 file changed, 17 insertions(+), 31 deletions(-)

diff --git a/csharp/rocketmq-client-csharp/Producer.cs b/csharp/rocketmq-client-csharp/Producer.cs
index 39e39b8e..69a4b118 100644
--- a/csharp/rocketmq-client-csharp/Producer.cs
+++ b/csharp/rocketmq-client-csharp/Producer.cs
@@ -128,22 +128,17 @@ namespace Org.Apache.Rocketmq
                 {
                     ResourceNamespace = resourceNamespace(),
                     Name = message.Topic
-                }
+                },
+                UserProperties = { message.UserProperties },
+                SystemProperties = new rmq::SystemProperties
+                {
+                    MessageId = message.MessageId,
+                    MessageType = rmq::MessageType.Normal,
+                    Keys = { message.Keys },
+                },
             };
             request.Messages.Add(entry);
 
-            // User properties
-            foreach (var item in message.UserProperties)
-            {
-                entry.UserProperties.Add(item.Key, item.Value);
-            }
-
-            entry.SystemProperties = new rmq::SystemProperties
-            {
-                MessageId = message.MessageId,
-                MessageType = rmq::MessageType.Normal
-            };
-            
             if (DateTime.MinValue != message.DeliveryTimestamp)
             {
                 entry.SystemProperties.MessageType = rmq::MessageType.Delay;
@@ -154,39 +149,30 @@ namespace Org.Apache.Rocketmq
                     Logger.Warn("A message may not be FIFO and delayed at the same time");
                     throw new MessageException("A message may not be both FIFO and Timed");
                 }
-            } else if (!String.IsNullOrEmpty(message.MessageGroup))
+            }
+            else if (!String.IsNullOrEmpty(message.MessageGroup))
             {
                 entry.SystemProperties.MessageType = rmq::MessageType.Fifo;
                 entry.SystemProperties.MessageGroup = message.MessageGroup;
             }
-            
+
             if (!string.IsNullOrEmpty(message.Tag))
             {
                 entry.SystemProperties.Tag = message.Tag;
             }
 
-            if (0 != message.Keys.Count)
-            {
-                foreach (var key in message.Keys)
-                {
-                    entry.SystemProperties.Keys.Add(key);
-                }
-            }
-
-            List<string> targets = new List<string>();
-            List<rmq::MessageQueue> candidates = publishLb.Select(message.MessageGroup, message.MaxAttemptTimes);
-            foreach (var messageQueue in candidates)
-            {
-                targets.Add(Utilities.TargetUrl(messageQueue));
-            }
-
             var metadata = new Metadata();
             Signature.Sign(this, metadata);
 
             Exception ex = null;
 
-            foreach (var target in targets)
+            var candidates = publishLb.Select(message.MessageGroup, message.MaxAttemptTimes);
+            foreach (var messageQueue in candidates)
             {
+                var target = Utilities.TargetUrl(messageQueue);
+                entry.SystemProperties.BornTimestamp = Timestamp.FromDateTimeOffset(DateTimeOffset.UtcNow);
+                entry.SystemProperties.QueueId = messageQueue.Id;
+
                 try
                 {
                     var stopWatch = new Stopwatch();