@@ -63,21 +63,22 @@ public void Publish<T>(string name, T value, IDictionary<string, string> headers
6363 throw new ArgumentNullException ( nameof ( name ) ) ;
6464 }
6565
66- if ( headers == null )
66+ headers ??= new Dictionary < string , string > ( ) ;
67+
68+ if ( ! headers . ContainsKey ( Headers . MessageId ) )
6769 {
68- headers = new Dictionary < string , string > ( ) ;
70+ var messageId = SnowflakeId . Default ( ) . NextId ( ) . ToString ( ) ;
71+ headers . Add ( Headers . MessageId , messageId ) ;
6972 }
70-
71- var messageId = SnowflakeId . Default ( ) . NextId ( ) . ToString ( ) ;
72- headers . Add ( Headers . MessageId , messageId ) ;
73- headers . Add ( Headers . MessageName , name ) ;
74- headers . Add ( Headers . Type , typeof ( T ) . Name ) ;
75- headers . Add ( Headers . SentTime , DateTimeOffset . Now . ToString ( ) ) ;
73+
7674 if ( ! headers . ContainsKey ( Headers . CorrelationId ) )
7775 {
78- headers . Add ( Headers . CorrelationId , messageId ) ;
76+ headers . Add ( Headers . CorrelationId , headers [ Headers . MessageId ] ) ;
7977 headers . Add ( Headers . CorrelationSequence , 0 . ToString ( ) ) ;
8078 }
79+ headers . Add ( Headers . MessageName , name ) ;
80+ headers . Add ( Headers . Type , typeof ( T ) . Name ) ;
81+ headers . Add ( Headers . SentTime , DateTimeOffset . Now . ToString ( ) ) ;
8182
8283 var message = new Message ( headers , value ) ;
8384
0 commit comments