@@ -15,15 +15,29 @@ public ServiceBusProducer(AzureServiceBusConfiguration azureServiceBusConfigurat
1515 {
1616 var client = new ServiceBusClient ( azureServiceBusConfiguration . ConnectionString ) ;
1717 _sender = client . CreateSender ( queueOrTopicName ) ;
18+
1819 _logger = logger ;
1920 }
2021
2122 public async Task ProduceAsync ( TMessage message , CancellationToken cancellationToken )
2223 {
23- await ProduceAsync ( message , producerOptions : null , cancellationToken ) ;
24+ var json = JsonConvert . SerializeObject ( message ) ;
25+ var serviceBusMessage = new ServiceBusMessage ( json )
26+ {
27+ Subject = message . RoutingKey ,
28+ ApplicationProperties =
29+ {
30+ { "MessageType" , message . GetType ( ) . FullName } ,
31+ { "CreatedAt" , message . CreatedDate . ToString ( "O" ) }
32+ }
33+ } ;
34+
35+ await _sender . SendMessageAsync ( serviceBusMessage , cancellationToken ) ;
36+
37+ _logger . LogInformation ( "Message {MessageType} published with successfully!" , message . GetType ( ) . Name ) ;
2438 }
2539
26- public async Task ProduceAsync ( TMessage message , MessageOptions ? producerOptions , CancellationToken cancellationToken )
40+ public Task ProduceAsync ( TMessage message , MessageOptions producerOptions , CancellationToken cancellationToken )
2741 {
2842 var json = JsonConvert . SerializeObject ( message ) ;
2943 var serviceBusMessage = new ServiceBusMessage ( json )
@@ -38,29 +52,26 @@ public async Task ProduceAsync(TMessage message, MessageOptions? producerOptions
3852
3953 if ( producerOptions ? . ApplicationProperties is not null )
4054 {
41- foreach ( var kvp in producerOptions . ApplicationProperties )
42- {
43- if ( ! serviceBusMessage . ApplicationProperties . ContainsKey ( kvp . Key ) )
44- serviceBusMessage . ApplicationProperties . Add ( kvp . Key , kvp . Value ) ;
45- }
55+ producerOptions ? . ApplicationProperties ?
56+ . Where ( kvp => ! serviceBusMessage . ApplicationProperties . ContainsKey ( kvp . Key ) )
57+ . ToList ( )
58+ . ForEach ( kvp => serviceBusMessage . ApplicationProperties . Add ( kvp . Key , kvp . Value ) ) ;
4659 }
4760
4861 if ( producerOptions ? . Delay is not null )
4962 {
5063 serviceBusMessage . ScheduledEnqueueTime = DateTimeOffset . UtcNow . Add ( producerOptions . Delay . Value ) ;
5164 }
5265
53- await _sender . SendMessageAsync ( serviceBusMessage , cancellationToken ) ;
54-
55- _logger . LogInformation ( "Message {MessageType} published successfully!" , message . GetType ( ) . Name ) ;
66+ return _sender . SendMessageAsync ( serviceBusMessage , cancellationToken ) ;
5667 }
5768
5869 public Task ProduceAsync ( TMessage message , TimeSpan delay , CancellationToken cancellationToken )
5970 {
6071 return ProduceAsync ( message , new MessageOptions ( delay , null ) , cancellationToken ) ;
6172 }
6273
63- public Task ProduceAsync ( TMessage message , IDictionary < string , string > applicationProperties , CancellationToken cancellationToken )
74+ public Task ProduceAsync ( TMessage message , IDictionary < string , object > applicationProperties , CancellationToken cancellationToken )
6475 {
6576 return ProduceAsync ( message , new MessageOptions ( null , applicationProperties ) , cancellationToken ) ;
6677 }
0 commit comments