From 0a70fb8dde21fbbd11a8d9f4b61471ec1903cc86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?SampsonYe=28=E5=8F=B6=E9=A3=9E=29?= Date: Fri, 16 Sep 2022 21:21:42 +0800 Subject: [PATCH 1/3] Fix consumer serviceregister error when with scope lifetime factory mode. #1204 --- .../Internal/IConsumerServiceSelector.Default.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/DotNetCore.CAP/Internal/IConsumerServiceSelector.Default.cs b/src/DotNetCore.CAP/Internal/IConsumerServiceSelector.Default.cs index 8ff4b54e9..f1b22a353 100644 --- a/src/DotNetCore.CAP/Internal/IConsumerServiceSelector.Default.cs +++ b/src/DotNetCore.CAP/Internal/IConsumerServiceSelector.Default.cs @@ -77,7 +77,11 @@ protected virtual IEnumerable FindConsumersFromInter var executorDescriptorList = new List(); var capSubscribeTypeInfo = typeof(ICapSubscribe).GetTypeInfo(); - var serviceCollection = provider.GetRequiredService(); + + using var scope = provider.CreateScope(); + var scopeProvider = scope.ServiceProvider; + + var serviceCollection = scopeProvider.GetRequiredService(); foreach (var service in serviceCollection .Where(o => o.ImplementationType != null || o.ImplementationFactory != null)) @@ -91,7 +95,7 @@ protected virtual IEnumerable FindConsumersFromInter var actualType = service.ImplementationType; if (actualType == null && service.ImplementationFactory != null) { - actualType = provider.GetRequiredService(service.ServiceType).GetType(); + actualType = scopeProvider.GetRequiredService(service.ServiceType).GetType(); } if (actualType == null) From 303257ae94f4c67c7d7f433e7b5dc79d65a204ee Mon Sep 17 00:00:00 2001 From: Savorboard Date: Mon, 19 Sep 2022 12:25:09 +0800 Subject: [PATCH 2/3] Update version.props --- build/version.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/version.props b/build/version.props index 70d677a22..4e2b7e36d 100644 --- a/build/version.props +++ b/build/version.props @@ -1,8 +1,8 @@ 6 - 1 - 1 + 2 + 0 $(VersionMajor).$(VersionMinor).$(VersionPatch) From b5b67b3a116f4b00b35b9782154e4e7c7f210146 Mon Sep 17 00:00:00 2001 From: Michal Latoszek Date: Thu, 22 Sep 2022 13:39:45 +0200 Subject: [PATCH 3/3] Fixed RedisStream.Manager.Extensions.TryGetOrCreateStreamGroupAsync to create ConsumerGroup when not found. --- build/version.props | 2 +- .../IRedisStream.Manager.Extensions.cs | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/build/version.props b/build/version.props index 4e2b7e36d..7acea7fe4 100644 --- a/build/version.props +++ b/build/version.props @@ -2,7 +2,7 @@ 6 2 - 0 + 1 $(VersionMajor).$(VersionMinor).$(VersionPatch) diff --git a/src/DotNetCore.CAP.RedisStreams/IRedisStream.Manager.Extensions.cs b/src/DotNetCore.CAP.RedisStreams/IRedisStream.Manager.Extensions.cs index cdb99b0f7..5f84a5625 100644 --- a/src/DotNetCore.CAP.RedisStreams/IRedisStream.Manager.Extensions.cs +++ b/src/DotNetCore.CAP.RedisStreams/IRedisStream.Manager.Extensions.cs @@ -66,6 +66,9 @@ private static async Task TryGetOrCreateStreamGroupAsync(this IDatabase database var groupInfo = await database.StreamGroupInfoAsync(stream); if (groupInfo.Any(g => g.Name == consumerGroup)) return; + + await database.StreamCreateConsumerGroupAsync(stream, consumerGroup, StreamPosition.NewMessages) + .ConfigureAwait(false); } catch (Exception ex) {