gitextract__fz6t0_d/ ├── .flubu ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── feature_request.yml │ │ └── question.yml │ ├── pull_request_template.md │ └── workflows/ │ └── deploy-docs-and-dashboard.yml ├── .gitignore ├── CAP.sln ├── CAP.sln.DotSettings ├── LICENSE.txt ├── README.md ├── README.zh-cn.md ├── appveyor.yml ├── build/ │ ├── BuildScript.Util.cs │ ├── BuildScript.Version.cs │ ├── BuildScript.cs │ ├── BuildScript.csproj │ ├── BuildVersion.cs │ └── version.props ├── code-of-conduct.md ├── docs/ │ ├── content/ │ │ ├── CNAME │ │ ├── about/ │ │ │ ├── contact-us.md │ │ │ ├── license.md │ │ │ └── release-notes.md │ │ ├── index.md │ │ └── user-guide/ │ │ ├── en/ │ │ │ ├── cap/ │ │ │ │ ├── configuration.md │ │ │ │ ├── filter.md │ │ │ │ ├── idempotence.md │ │ │ │ ├── messaging.md │ │ │ │ ├── serialization.md │ │ │ │ └── transactions.md │ │ │ ├── getting-started/ │ │ │ │ ├── contributing.md │ │ │ │ ├── introduction.md │ │ │ │ └── quick-start.md │ │ │ ├── monitoring/ │ │ │ │ ├── consul.md │ │ │ │ ├── dashboard.md │ │ │ │ ├── diagnostics.md │ │ │ │ ├── kubernetes.md │ │ │ │ └── opentelemetry.md │ │ │ ├── samples/ │ │ │ │ ├── eshoponcontainers.md │ │ │ │ ├── faq.md │ │ │ │ └── github.md │ │ │ ├── storage/ │ │ │ │ ├── general.md │ │ │ │ ├── in-memory-storage.md │ │ │ │ ├── mongodb.md │ │ │ │ ├── mysql.md │ │ │ │ ├── postgresql.md │ │ │ │ └── sqlserver.md │ │ │ └── transport/ │ │ │ ├── aws-sqs.md │ │ │ ├── azure-service-bus.md │ │ │ ├── general.md │ │ │ ├── in-memory-queue.md │ │ │ ├── kafka.md │ │ │ ├── nats.md │ │ │ ├── pulsar.md │ │ │ ├── rabbitmq.md │ │ │ └── redis-streams.md │ │ └── zh/ │ │ ├── cap/ │ │ │ ├── configuration.md │ │ │ ├── filter.md │ │ │ ├── idempotence.md │ │ │ ├── messaging.md │ │ │ ├── serialization.md │ │ │ └── transactions.md │ │ ├── getting-started/ │ │ │ ├── contributing.md │ │ │ ├── introduction.md │ │ │ └── quick-start.md │ │ ├── monitoring/ │ │ │ ├── consul.md │ │ │ ├── dashboard.md │ │ │ ├── diagnostics.md │ │ │ ├── kubernetes.md │ │ │ └── opentelemetry.md │ │ ├── samples/ │ │ │ ├── castle.dynamicproxy.md │ │ │ ├── eshoponcontainers.md │ │ │ ├── faq.md │ │ │ └── github.md │ │ ├── storage/ │ │ │ ├── general.md │ │ │ ├── in-memory-storage.md │ │ │ ├── mongodb.md │ │ │ ├── mysql.md │ │ │ ├── postgresql.md │ │ │ └── sqlserver.md │ │ └── transport/ │ │ ├── aws-sqs.md │ │ ├── azure-service-bus.md │ │ ├── general.md │ │ ├── in-memory-queue.md │ │ ├── kafka.md │ │ ├── nats.md │ │ ├── pulsar.md │ │ ├── rabbitmq.md │ │ └── redis-streams.md │ ├── mkdocs.yml │ └── readme.md ├── samples/ │ ├── Sample.AmazonSQS.InMemory/ │ │ ├── Controllers/ │ │ │ └── ValuesController.cs │ │ ├── Program.cs │ │ ├── Sample.AmazonSQS.InMemory.csproj │ │ └── appsettings.json │ ├── Sample.AzureServiceBus.InMemory/ │ │ ├── Contracts/ │ │ │ ├── DomainEvents/ │ │ │ │ └── Contract.cs │ │ │ └── IntegrationEvents/ │ │ │ └── Contract.cs │ │ ├── Program.cs │ │ ├── Sample.AzureServiceBus.InMemory.csproj │ │ ├── SampleSubscriber.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── Sample.ConsoleApp/ │ │ ├── EventSubscriber.cs │ │ ├── Program.cs │ │ └── Sample.ConsoleApp.csproj │ ├── Sample.Dashboard.Auth/ │ │ ├── Controllers/ │ │ │ └── ValuesController.cs │ │ ├── MyDashboardAuthenticationHandler.cs │ │ ├── Program.cs │ │ ├── Sample.Dashboard.Auth.csproj │ │ ├── Startup.cs │ │ └── appsettings.json │ ├── Sample.Dashboard.Jwt/ │ │ ├── Data/ │ │ │ └── User.cs │ │ ├── Dockerfile │ │ ├── Program.cs │ │ ├── Sample.Dashboard.Jwt.csproj │ │ ├── appsettings.json │ │ └── wwwroot/ │ │ ├── css/ │ │ │ └── site.css │ │ ├── index.html │ │ └── js/ │ │ └── site.js │ ├── Sample.Kafka.PostgreSql/ │ │ ├── AppDbContext.cs │ │ ├── Controllers/ │ │ │ └── ValuesController.cs │ │ ├── Program.cs │ │ ├── Sample.Kafka.PostgreSql.csproj │ │ └── appsettings.json │ ├── Sample.Pulsar.InMemory/ │ │ ├── Controllers/ │ │ │ └── ValuesController.cs │ │ ├── Program.cs │ │ ├── Sample.Pulsar.InMemory.csproj │ │ └── appsettings.json │ ├── Sample.RabbitMQ.MongoDB/ │ │ ├── Controllers/ │ │ │ └── ValuesController.cs │ │ ├── Program.cs │ │ ├── Sample.RabbitMQ.MongoDB.csproj │ │ ├── appsettings.json │ │ └── docker-compose.yml │ ├── Sample.RabbitMQ.MySql/ │ │ ├── AppDbContext.cs │ │ ├── Controllers/ │ │ │ └── ValuesController.cs │ │ ├── Program.cs │ │ ├── Sample.RabbitMQ.MySql.csproj │ │ └── appsettings.json │ ├── Sample.RabbitMQ.SqlServer/ │ │ ├── AppDbContext.cs │ │ ├── Controllers/ │ │ │ └── ValuesController.cs │ │ ├── Messages/ │ │ │ ├── TestMessage.cs │ │ │ ├── VeryFastProcessingReceiver.cs │ │ │ └── XSlowProcessingReceiver.cs │ │ ├── Migrations/ │ │ │ ├── 20191205032949_FirstMigration.Designer.cs │ │ │ ├── 20191205032949_FirstMigration.cs │ │ │ └── AppDbContextModelSnapshot.cs │ │ ├── Program.cs │ │ ├── Sample.RabbitMQ.SqlServer.csproj │ │ ├── TypedConsumers/ │ │ │ ├── QueueHandler.cs │ │ │ ├── QueueHandlerTopicAttribute.cs │ │ │ ├── QueueHandlersExtensions.cs │ │ │ └── TypedConsumerServiceSelector.cs │ │ └── appsettings.json │ └── Samples.Redis.SqlServer/ │ ├── Controllers/ │ │ └── HomeController.cs │ ├── Dockerfile │ ├── Program.cs │ ├── Samples.Redis.SqlServer.csproj │ ├── appsettings.json │ └── docker-compose.yml ├── src/ │ ├── Directory.Build.props │ ├── DotNetCore.CAP/ │ │ ├── BrokerConnectionException.cs │ │ ├── CAP.Attribute.cs │ │ ├── CAP.Builder.cs │ │ ├── CAP.Options.cs │ │ ├── CAP.ServiceCollectionExtensions.cs │ │ ├── Diagnostics/ │ │ │ ├── CapDiagnosticListenerNames.cs │ │ │ ├── EventCounterSource.Cap.cs │ │ │ ├── EventData.Cap.P.cs │ │ │ └── EventData.Cap.S.cs │ │ ├── DotNetCore.CAP.csproj │ │ ├── IBootstrapper.cs │ │ ├── ICapOptionsExtension.cs │ │ ├── ICapPublisher.cs │ │ ├── ICapSubscribe.cs │ │ ├── ICapTransaction.Base.cs │ │ ├── ICapTransaction.cs │ │ ├── Internal/ │ │ │ ├── ConsumerContext.cs │ │ │ ├── ConsumerExecutedResult.cs │ │ │ ├── ConsumerExecutorDescriptor.cs │ │ │ ├── Filter/ │ │ │ │ ├── ExceptionContext.cs │ │ │ │ ├── ExecutedContext.cs │ │ │ │ ├── ExecutingContext.cs │ │ │ │ ├── FilterContext.cs │ │ │ │ ├── ISubscribeFilter.cs │ │ │ │ └── SubscribeFilter.cs │ │ │ ├── Helper.cs │ │ │ ├── IBootstrapper.Default.cs │ │ │ ├── ICapPublisher.Default.cs │ │ │ ├── IConsumerRegister.Default.cs │ │ │ ├── IConsumerRegister.cs │ │ │ ├── IConsumerServiceSelector.Assembly.cs │ │ │ ├── IConsumerServiceSelector.Default.cs │ │ │ ├── IConsumerServiceSelector.cs │ │ │ ├── IMessageSender.Default.cs │ │ │ ├── IMessageSender.cs │ │ │ ├── IProcessingServer.cs │ │ │ ├── ISnowflakeId.Default.cs │ │ │ ├── ISnowflakeId.cs │ │ │ ├── ISubscribeExector.Default.cs │ │ │ ├── ISubscribeExecutor.cs │ │ │ ├── ISubscribeInvoker.Default.cs │ │ │ ├── ISubscribeInvoker.cs │ │ │ ├── LoggerExtensions.cs │ │ │ ├── MethodMatcherCache.cs │ │ │ ├── NoopTransaction.cs │ │ │ ├── ObjectMethodExecutor/ │ │ │ │ ├── AwaitableInfo.cs │ │ │ │ ├── CoercedAwaitableInfo.cs │ │ │ │ ├── ObjectMethodExecutor.cs │ │ │ │ ├── ObjectMethodExecutorAwaitable.cs │ │ │ │ └── ObjectMethodExecutorFSharpSupport.cs │ │ │ ├── PublisherSentFailedException.cs │ │ │ ├── ScheduledMediumMessageQueue.cs │ │ │ ├── StatusName.cs │ │ │ ├── SubscriberExecutionFailedException.cs │ │ │ └── TopicAttribute.cs │ │ ├── Messages/ │ │ │ ├── FailedInfo.cs │ │ │ ├── Headers.cs │ │ │ ├── Message.cs │ │ │ ├── MessageType.cs │ │ │ └── TransportMessage.cs │ │ ├── Monitoring/ │ │ │ ├── IMonitoringApi.cs │ │ │ ├── MessageDto.cs │ │ │ ├── MessageQueryDto.cs │ │ │ ├── PagedQueryResult.cs │ │ │ └── StatisticsDto.cs │ │ ├── OperateResult.cs │ │ ├── Persistence/ │ │ │ ├── IDataStorage.cs │ │ │ ├── IStorageInitializer.cs │ │ │ └── MediumMessage.cs │ │ ├── Processor/ │ │ │ ├── IDispatcher.Default.cs │ │ │ ├── IProcessingServer.Cap.cs │ │ │ ├── IProcessor.Collector.cs │ │ │ ├── IProcessor.Delayed.cs │ │ │ ├── IProcessor.InfiniteRetry.cs │ │ │ ├── IProcessor.NeedRetry.cs │ │ │ ├── IProcessor.TransportCheck.cs │ │ │ ├── IProcessor.cs │ │ │ └── ProcessingContext.cs │ │ ├── Serialization/ │ │ │ ├── ISerializer.JsonUtf8.cs │ │ │ └── ISerializer.cs │ │ ├── SubscriberNotFoundException.cs │ │ └── Transport/ │ │ ├── BrokerAddress.cs │ │ ├── IConsumerClient.cs │ │ ├── IConsumerClientFactory.cs │ │ ├── IDispatcher.cs │ │ ├── ITransport.cs │ │ └── MqLogType.cs │ ├── DotNetCore.CAP.AmazonSQS/ │ │ ├── AmazonPolicyExtensions.cs │ │ ├── AmazonSQSConsumerClient.cs │ │ ├── AmazonSQSConsumerClientFactory.cs │ │ ├── CAP.AmazonSQSOptions.cs │ │ ├── CAP.AmazonSQSOptionsExtension.cs │ │ ├── CAP.Options.Extensions.cs │ │ ├── DotNetCore.CAP.AmazonSQS.csproj │ │ ├── ITransport.AmazonSQS.cs │ │ ├── SQSReceivedMessage.cs │ │ └── TopicNormalizer.cs │ ├── DotNetCore.CAP.AzureServiceBus/ │ │ ├── AzureServiceBusConsumerClient.cs │ │ ├── AzureServiceBusConsumerClientFactory.cs │ │ ├── AzureServiceBusConsumerCommitInput.cs │ │ ├── AzureServiceBusHeaders.cs │ │ ├── CAP.AzureServiceBusOptions.cs │ │ ├── CAP.AzureServiceBusOptionsExtension.cs │ │ ├── CAP.Options.Extensions.cs │ │ ├── DotNetCore.CAP.AzureServiceBus.csproj │ │ ├── Helpers/ │ │ │ └── ServiceBusHelpers.cs │ │ ├── ITransport.AzureServiceBus.cs │ │ ├── Producer/ │ │ │ ├── IServiceBusProducerDescriptor.cs │ │ │ ├── IServiceBusProducerDescriptorFactory.cs │ │ │ └── ServiceBusProducerDescriptorBuilder.cs │ │ └── ServiceBusProcessorFacade.cs │ ├── DotNetCore.CAP.Dashboard/ │ │ ├── CAP.BuilderExtension.cs │ │ ├── CAP.DashboardOptions.cs │ │ ├── CAP.DashboardOptionsExtensions.cs │ │ ├── CAP.MetricsEventListener.cs │ │ ├── CapCache.cs │ │ ├── CircularBuffer.cs │ │ ├── DotNetCore.CAP.Dashboard.csproj │ │ ├── GatewayProxy/ │ │ │ ├── GatewayProxyAgent.cs │ │ │ ├── IRequestMapper.Default.cs │ │ │ ├── IRequestMapper.cs │ │ │ └── Requester/ │ │ │ ├── HttpClientBuilder.cs │ │ │ ├── HttpClientHttpRequester.cs │ │ │ ├── IHttpClient.cs │ │ │ ├── IHttpClientBuilder.cs │ │ │ ├── IHttpClientCache.cs │ │ │ ├── IHttpRequester.cs │ │ │ └── MemoryHttpClientCache.cs │ │ ├── HtmlHelper.cs │ │ ├── NodeDiscovery/ │ │ │ ├── CAP.ConsulDiscoveryOptions.cs │ │ │ ├── CAP.ConsulDiscoveryOptionsExtensions.cs │ │ │ ├── INodeDiscoveryProvider.Consul.cs │ │ │ ├── INodeDiscoveryProvider.cs │ │ │ ├── IProcessingServer.Consul.cs │ │ │ └── Node.cs │ │ ├── RouteActionProvider.cs │ │ └── wwwroot/ │ │ ├── .gitignore │ │ ├── .vscode/ │ │ │ └── settings.json │ │ ├── README.md │ │ ├── dist/ │ │ │ ├── assets/ │ │ │ │ ├── Nodes.40464ac3.css │ │ │ │ ├── Nodes.e12132f5.js │ │ │ │ ├── Published.429cfade.css │ │ │ │ ├── Published.a8d638e6.js │ │ │ │ ├── Received.37160321.css │ │ │ │ ├── Received.e36ea621.js │ │ │ │ ├── Subscriber.300bed2c.css │ │ │ │ ├── Subscriber.d66f9645.js │ │ │ │ ├── index.2d8714a6.js │ │ │ │ ├── index.856c0890.css │ │ │ │ └── index.909977fe.js │ │ │ └── index.html │ │ ├── index.html │ │ ├── package.json │ │ ├── src/ │ │ │ ├── App.vue │ │ │ ├── assets/ │ │ │ │ ├── language/ │ │ │ │ │ ├── en-us.js │ │ │ │ │ └── zh-cn.js │ │ │ │ └── uPlot.esm.js │ │ │ ├── components/ │ │ │ │ ├── Footer.vue │ │ │ │ └── Navigation.vue │ │ │ ├── main.js │ │ │ ├── pages/ │ │ │ │ ├── Home.vue │ │ │ │ ├── Nodes.vue │ │ │ │ ├── Published.vue │ │ │ │ ├── Received.vue │ │ │ │ └── Subscriber.vue │ │ │ ├── router/ │ │ │ │ └── index.js │ │ │ └── store/ │ │ │ └── store.js │ │ └── vite.config.js │ ├── DotNetCore.CAP.Dashboard.K8s/ │ │ ├── DotNetCore.CAP.Dashboard.K8s.csproj │ │ ├── K8sDiscoveryOptions.cs │ │ ├── K8sDiscoveryOptionsExtensions.cs │ │ ├── K8sNodeDiscoveryProvider.cs │ │ └── ServiceCollectionExtensions.cs │ ├── DotNetCore.CAP.InMemoryStorage/ │ │ ├── CAP.InMemoryCapOptionsExtension.cs │ │ ├── CAP.Options.Extensions.cs │ │ ├── DotNetCore.CAP.InMemoryStorage.csproj │ │ ├── ICapTransaction.InMemory.cs │ │ ├── IDataStorage.InMemory.cs │ │ ├── IMonitoringApi.InMemory.cs │ │ ├── IStorageInitializer.InMemory.cs │ │ └── MemoryMessage.cs │ ├── DotNetCore.CAP.Kafka/ │ │ ├── CAP.KafkaCapOptionsExtension.cs │ │ ├── CAP.KafkaOptions.cs │ │ ├── CAP.Options.Extensions.cs │ │ ├── DotNetCore.CAP.Kafka.csproj │ │ ├── IConnectionPool.Default.cs │ │ ├── IConnectionPool.cs │ │ ├── ITransport.Kafka.cs │ │ ├── KafkaConsumerClient.cs │ │ ├── KafkaConsumerClientFactory.cs │ │ └── KafkaHeaders.cs │ ├── DotNetCore.CAP.MongoDB/ │ │ ├── CAP.MongoDBCapOptionsExtension.cs │ │ ├── CAP.MongoDBOptions.cs │ │ ├── CAP.Options.Extensions.cs │ │ ├── DotNetCore.CAP.MongoDB.csproj │ │ ├── ICapTransaction.MongoDB.cs │ │ ├── IClientSessionHandle.CAP.cs │ │ ├── IDataStorage.MongoDB.cs │ │ ├── IMonitoringApi.MongoDB.cs │ │ ├── IStorageInitializer.MongoDB.cs │ │ └── StorageMessage.cs │ ├── DotNetCore.CAP.MySql/ │ │ ├── CAP.EFOptions.cs │ │ ├── CAP.MySqlCapOptionsExtension.cs │ │ ├── CAP.MySqlOptions.cs │ │ ├── CAP.Options.Extensions.cs │ │ ├── DotNetCore.CAP.MySql.csproj │ │ ├── ICapTransaction.MySql.cs │ │ ├── IDataStorage.MySql.cs │ │ ├── IDbConnection.Extensions.cs │ │ ├── IDbContextTransaction.CAP.cs │ │ ├── IMonitoringApi.MySql.cs │ │ ├── IStorageInitializer.MySql.cs │ │ └── ServerVersion.cs │ ├── DotNetCore.CAP.NATS/ │ │ ├── CAP.NATSCapOptionsExtension.cs │ │ ├── CAP.NATSOptions.cs │ │ ├── CAP.Options.Extensions.cs │ │ ├── DotNetCore.CAP.NATS.csproj │ │ ├── IConnectionPool.Default.cs │ │ ├── IConnectionPool.cs │ │ ├── ITransport.NATS.cs │ │ ├── NATSConsumerClient.cs │ │ └── NATSConsumerClientFactory.cs │ ├── DotNetCore.CAP.OpenTelemetry/ │ │ ├── CapInstrumentation.cs │ │ ├── DiagnosticListener.cs │ │ ├── DiagnosticSourceSubscriber.cs │ │ ├── DotNetCore.CAP.OpenTelemetry.csproj │ │ └── TracerProviderBuilder.Extension.cs │ ├── DotNetCore.CAP.PostgreSql/ │ │ ├── CAP.EFOptions.cs │ │ ├── CAP.Options.Extensions.cs │ │ ├── CAP.PostgreSqlCapOptionsExtension.cs │ │ ├── CAP.PostgreSqlOptions.cs │ │ ├── DotNetCore.CAP.PostgreSql.csproj │ │ ├── ICapTransaction.PostgreSql.cs │ │ ├── IDataStorage.PostgreSql.cs │ │ ├── IDbConnection.Extensions.cs │ │ ├── IDbContextTransaction.CAP.cs │ │ ├── IMonitoringApi.PostgreSql.cs │ │ └── IStorageInitializer.PostgreSql.cs │ ├── DotNetCore.CAP.Pulsar/ │ │ ├── CAP.Options.Extensions.cs │ │ ├── CAP.PulsarCapOptionsExtension.cs │ │ ├── CAP.PulsarOptions.cs │ │ ├── DotNetCore.CAP.Pulsar.csproj │ │ ├── IConnectionFactory.Default.cs │ │ ├── IConnectionFactory.cs │ │ ├── ITransport.Pulsar.cs │ │ ├── PulsarConsumerClient.cs │ │ ├── PulsarConsumerClientFactory.cs │ │ └── PulsarHeaders.cs │ ├── DotNetCore.CAP.RabbitMQ/ │ │ ├── CAP.Options.Extensions.cs │ │ ├── CAP.RabbiMQOptions.cs │ │ ├── CAP.RabbitMQCapOptionsExtension.cs │ │ ├── DotNetCore.CAP.RabbitMQ.csproj │ │ ├── IConnectionChannelPool.Default.cs │ │ ├── IConnectionChannelPool.cs │ │ ├── ITransport.RabbitMQ.cs │ │ ├── RabbitMQBasicConsumer.cs │ │ ├── RabbitMQConsumerClient.cs │ │ └── RabbitMQConsumerClientFactory.cs │ ├── DotNetCore.CAP.RedisStreams/ │ │ ├── CapOptions.Redis.Extensions.cs │ │ ├── CapOptions.Redis.cs │ │ ├── DotNetCore.CAP.RedisStreams.csproj │ │ ├── ICapOptionsExtension.Redis.cs │ │ ├── IConnectionPool.Default.cs │ │ ├── IConnectionPool.LazyConnection.cs │ │ ├── IConnectionPool.cs │ │ ├── IConsumerClient.Redis.cs │ │ ├── IConsumerClientFactory.Redis.cs │ │ ├── IRedis.Events.Logger.cs │ │ ├── IRedis.Events.cs │ │ ├── IRedisStream.Manager.Default.cs │ │ ├── IRedisStream.Manager.Extensions.cs │ │ ├── IRedisStream.Manager.cs │ │ ├── ITransport.Redis.cs │ │ ├── RedisErrorExtensions.cs │ │ ├── TransportMessage.Redis.Exceptions.cs │ │ └── TransportMessage.Redis.cs │ └── DotNetCore.CAP.SqlServer/ │ ├── CAP.EFOptions.cs │ ├── CAP.Options.Extensions.cs │ ├── CAP.SqlServerCapOptionsExtension.cs │ ├── CAP.SqlServerOptions.cs │ ├── Diagnostics/ │ │ ├── DiagnosticObserver.cs │ │ ├── DiagnosticProcessorObserver.cs │ │ └── IProcessingServer.DiagnosticRegister.cs │ ├── DotNetCore.CAP.SqlServer.csproj │ ├── ICapTransaction.SqlServer.cs │ ├── IDataStorage.SqlServer.cs │ ├── IDbConnection.Extensions.cs │ ├── IDbContextTransaction.CAP.cs │ ├── IMonitoringApi.SqlServer.cs │ └── IStorageInitializer.SqlServer.cs └── test/ ├── DotNetCore.CAP.AzureServiceBus.Test/ │ ├── DotNetCore.CAP.AzureServiceBus.Test.csproj │ ├── Helpers/ │ │ └── ServiceBusHelperTests.cs │ ├── Producer/ │ │ └── ServiceBusProducerBuilderTests.cs │ └── ServiceBusTransportTests.cs ├── DotNetCore.CAP.MultiModuleSubscriberTests/ │ ├── DotNetCore.CAP.MultiModuleSubscriberTests.csproj │ └── SubscriberClass.cs ├── DotNetCore.CAP.MySql.Test/ │ ├── ConnectionUtil.cs │ ├── DatabaseTestHost.cs │ ├── DotNetCore.CAP.MySql.Test.csproj │ ├── MySqlStorageConnectionTest.cs │ ├── MySqlStorageTest.cs │ └── TestHost.cs └── DotNetCore.CAP.Test/ ├── CAP.BuilderTest.cs ├── ConsumerServiceSelectorTest.cs ├── CustomConsumerSubscribeTest.cs ├── DispatcherTests.cs ├── DotNetCore.CAP.Test.csproj ├── FakeInMemoryQueue/ │ ├── CAP.FakeQueueOptionsExtension.cs │ ├── CAP.Options.Extensions.cs │ ├── ITransport.FakeInMemory.cs │ ├── InMemoryConsumerClient.cs │ ├── InMemoryConsumerClientFactory.cs │ └── InMemoryQueue.cs ├── GenericConsumerServiceSelector.cs ├── HelperTest.cs ├── Helpers/ │ ├── ObservableCollectionExtensions.cs │ ├── TestBootstrapService.cs │ ├── TestHostedServiceExtensions.cs │ ├── TestLogger.cs │ ├── TestLoggingExtensions.cs │ ├── TestLoggingProvider.cs │ ├── TestMessageCollector.cs │ ├── TestServiceCollectionExtensions.cs │ └── TestThreadSafeMessageSender.cs ├── IntegrationTests/ │ ├── CancellationTokenSubscriberTest.cs │ └── IntegrationTestBase.cs ├── MessageExtensionTest.cs ├── MessageTest.cs ├── SnowflakeIdTest.cs ├── SubscribeInvokerTest.cs ├── SubscribeInvokerWithCancellation.cs └── SubscriberCollisionTests/ ├── NewMethodTests.cs ├── OldMethodTests.cs └── SubscriberClass.cs