@@ -22,15 +22,15 @@ public class EventBusServiceBus : IEventBus
2222 private readonly string AUTOFAC_SCOPE_NAME = "eshop_event_bus" ;
2323 private const string INTEGRATION_EVENT_SUFIX = "IntegrationEvent" ;
2424
25- public EventBusServiceBus ( IServiceBusPersisterConnection serviceBusPersisterConnection ,
25+ public EventBusServiceBus ( IServiceBusPersisterConnection serviceBusPersisterConnection ,
2626 ILogger < EventBusServiceBus > logger , IEventBusSubscriptionsManager subsManager , string subscriptionClientName ,
2727 ILifetimeScope autofac )
2828 {
2929 _serviceBusPersisterConnection = serviceBusPersisterConnection ;
3030 _logger = logger ;
3131 _subsManager = subsManager ?? new InMemoryEventBusSubscriptionsManager ( ) ;
3232
33- _subscriptionClient = new SubscriptionClient ( serviceBusPersisterConnection . ServiceBusConnectionStringBuilder ,
33+ _subscriptionClient = new SubscriptionClient ( serviceBusPersisterConnection . ServiceBusConnectionStringBuilder ,
3434 subscriptionClientName ) ;
3535 _autofac = autofac ;
3636
@@ -68,7 +68,7 @@ public void Subscribe<T, TH>()
6868 where T : IntegrationEvent
6969 where TH : IIntegrationEventHandler < T >
7070 {
71- var eventName = typeof ( T ) . Name . Replace ( INTEGRATION_EVENT_SUFIX , "" ) ;
71+ var eventName = typeof ( T ) . Name . Replace ( INTEGRATION_EVENT_SUFIX , "" ) ;
7272
7373 var containsKey = _subsManager . HasSubscriptionsForEvent < T > ( ) ;
7474 if ( ! containsKey )
@@ -81,7 +81,7 @@ public void Subscribe<T, TH>()
8181 Name = eventName
8282 } ) . GetAwaiter ( ) . GetResult ( ) ;
8383 }
84- catch ( ServiceBusException )
84+ catch ( ServiceBusException )
8585 {
8686 _logger . LogInformation ( $ "The messaging entity { eventName } already exists.") ;
8787 }
@@ -129,10 +129,12 @@ private void RegisterSubscriptionClientMessageHandler()
129129 {
130130 var eventName = $ "{ message . Label } { INTEGRATION_EVENT_SUFIX } ";
131131 var messageData = Encoding . UTF8 . GetString ( message . Body ) ;
132- await ProcessEvent ( eventName , messageData ) ;
133-
132+
134133 // Complete the message so that it is not received again.
135- await _subscriptionClient . CompleteAsync ( message . SystemProperties . LockToken ) ;
134+ if ( await ProcessEvent ( eventName , messageData ) )
135+ {
136+ await _subscriptionClient . CompleteAsync ( message . SystemProperties . LockToken ) ;
137+ }
136138 } ,
137139 new MessageHandlerOptions ( ExceptionReceivedHandler ) { MaxConcurrentCalls = 10 , AutoComplete = false } ) ;
138140 }
@@ -148,8 +150,9 @@ private Task ExceptionReceivedHandler(ExceptionReceivedEventArgs exceptionReceiv
148150 return Task . CompletedTask ;
149151 }
150152
151- private async Task ProcessEvent ( string eventName , string message )
153+ private async Task < bool > ProcessEvent ( string eventName , string message )
152154 {
155+ var processed = false ;
153156 if ( _subsManager . HasSubscriptionsForEvent ( eventName ) )
154157 {
155158 using ( var scope = _autofac . BeginLifetimeScope ( AUTOFAC_SCOPE_NAME ) )
@@ -173,7 +176,9 @@ private async Task ProcessEvent(string eventName, string message)
173176 }
174177 }
175178 }
179+ processed = true ;
176180 }
181+ return processed ;
177182 }
178183
179184 private void RemoveDefaultRule ( )
@@ -191,4 +196,4 @@ private void RemoveDefaultRule()
191196 }
192197 }
193198 }
194- }
199+ }
0 commit comments