11namespace Apollo . Components . Infrastructure . MessageBus ;
22using Microsoft . Extensions . Logging ;
3+ using Apollo . Components . Infrastructure . Environment ;
34
45public class InMemoryMessageBus : IMessageBus
56{
@@ -9,15 +10,36 @@ public class InMemoryMessageBus : IMessageBus
910
1011 private readonly IServiceProvider _serviceProvider ;
1112 private readonly ILogger < InMemoryMessageBus > _logger ;
13+ private readonly CapturedEventState _capturedEventState ;
1214
13- public InMemoryMessageBus ( IServiceProvider serviceProvider , ILogger < InMemoryMessageBus > logger )
15+ internal bool CaptureDebugInformation { get ; }
16+
17+ public InMemoryMessageBus (
18+ IServiceProvider serviceProvider ,
19+ ILogger < InMemoryMessageBus > logger ,
20+ CapturedEventState capturedEventState ,
21+ IRuntimeEnvironment runtimeEnvironment )
1422 {
1523 _serviceProvider = serviceProvider ;
1624 _logger = logger ;
25+ _capturedEventState = capturedEventState ;
26+ CaptureDebugInformation = runtimeEnvironment . IsDevelopment ( ) ;
1727 }
1828
1929 public async Task PublishAsync < TMessage > ( TMessage message ) where TMessage : class
2030 {
31+ if ( CaptureDebugInformation )
32+ {
33+ try
34+ {
35+ _capturedEventState . Add ( typeof ( TMessage ) , message ) ;
36+ }
37+ catch ( Exception ex )
38+ {
39+ _logger . LogError ( ex , "Error capturing message {MessageType}" , typeof ( TMessage ) . Name ) ;
40+ }
41+ }
42+
2143 var registeredConsumers = GetOrResolveConsumers < TMessage > ( ) ;
2244
2345 var manualSubscribers = _subscribers . TryGetValue ( typeof ( TMessage ) , out var subscribers )
0 commit comments