updated to .NET9 and cache ConnectionMultiplexer instead of IDatabase as per documentation
This commit is contained in:
parent
6249028be9
commit
85876688a9
@ -2,15 +2,15 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.Orleans.Client" Version="8.1.0" />
|
<PackageReference Include="Microsoft.Orleans.Client" Version="9.0.1" />
|
||||||
<PackageReference Include="Microsoft.Orleans.Streaming" Version="8.1.0" />
|
<PackageReference Include="Microsoft.Orleans.Streaming" Version="9.0.1" />
|
||||||
<PackageReference Include="StackExchange.Redis" Version="2.7.33" />
|
<PackageReference Include="StackExchange.Redis" Version="2.8.24" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@ -9,10 +9,9 @@ using StackExchange.Redis;
|
|||||||
using IHost host = new HostBuilder()
|
using IHost host = new HostBuilder()
|
||||||
.UseOrleansClient(clientBuilder =>
|
.UseOrleansClient(clientBuilder =>
|
||||||
{
|
{
|
||||||
clientBuilder.Services.AddSingleton<IDatabase>(sp =>
|
clientBuilder.Services.AddSingleton<IConnectionMultiplexer>(sp =>
|
||||||
{
|
{
|
||||||
IDatabase db = ConnectionMultiplexer.Connect("localhost").GetDatabase();
|
return ConnectionMultiplexer.Connect("localhost");
|
||||||
return db;
|
|
||||||
});
|
});
|
||||||
clientBuilder.UseLocalhostClustering();
|
clientBuilder.UseLocalhostClustering();
|
||||||
|
|
||||||
|
|||||||
@ -1,15 +1,15 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.Orleans.Streaming" Version="8.1.0" />
|
<PackageReference Include="Microsoft.Orleans.Streaming" Version="9.0.1" />
|
||||||
<PackageReference Include="Microsoft.Orleans.Sdk" Version="8.1.0" />
|
<PackageReference Include="Microsoft.Orleans.Sdk" Version="9.0.1" />
|
||||||
<PackageReference Include="StackExchange.Redis" Version="2.7.33" />
|
<PackageReference Include="StackExchange.Redis" Version="2.8.24" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@ -9,14 +9,14 @@ namespace Provider
|
|||||||
{
|
{
|
||||||
public class RedisStreamFactory : IQueueAdapterFactory
|
public class RedisStreamFactory : IQueueAdapterFactory
|
||||||
{
|
{
|
||||||
private readonly IDatabase _database;
|
private readonly IConnectionMultiplexer _connectionMultiplexer;
|
||||||
private readonly ILoggerFactory _loggerFactory;
|
private readonly ILoggerFactory _loggerFactory;
|
||||||
private readonly string _providerName;
|
private readonly string _providerName;
|
||||||
private readonly IStreamFailureHandler _streamFailureHandler;
|
private readonly IStreamFailureHandler _streamFailureHandler;
|
||||||
private readonly SimpleQueueCacheOptions _simpleQueueCacheOptions;
|
private readonly SimpleQueueCacheOptions _simpleQueueCacheOptions;
|
||||||
private readonly HashRingBasedStreamQueueMapper _hashRingBasedStreamQueueMapper;
|
private readonly HashRingBasedStreamQueueMapper _hashRingBasedStreamQueueMapper;
|
||||||
|
|
||||||
public RedisStreamFactory(IDatabase database,
|
public RedisStreamFactory(IConnectionMultiplexer connectionMultiplexer,
|
||||||
ILoggerFactory loggerFactory,
|
ILoggerFactory loggerFactory,
|
||||||
string providerName,
|
string providerName,
|
||||||
IStreamFailureHandler streamFailureHandler,
|
IStreamFailureHandler streamFailureHandler,
|
||||||
@ -24,7 +24,7 @@ namespace Provider
|
|||||||
HashRingStreamQueueMapperOptions hashRingStreamQueueMapperOptions
|
HashRingStreamQueueMapperOptions hashRingStreamQueueMapperOptions
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
_database = database;
|
_connectionMultiplexer = connectionMultiplexer;
|
||||||
_loggerFactory = loggerFactory;
|
_loggerFactory = loggerFactory;
|
||||||
_providerName = providerName;
|
_providerName = providerName;
|
||||||
_streamFailureHandler = streamFailureHandler;
|
_streamFailureHandler = streamFailureHandler;
|
||||||
@ -34,18 +34,18 @@ namespace Provider
|
|||||||
|
|
||||||
public static IQueueAdapterFactory Create(IServiceProvider provider, string providerName)
|
public static IQueueAdapterFactory Create(IServiceProvider provider, string providerName)
|
||||||
{
|
{
|
||||||
var database = provider.GetRequiredService<IDatabase>();
|
var connMuliplexer = provider.GetRequiredService<IConnectionMultiplexer>();
|
||||||
var loggerFactory = provider.GetRequiredService<ILoggerFactory>();
|
var loggerFactory = provider.GetRequiredService<ILoggerFactory>();
|
||||||
var simpleQueueCacheOptions = provider.GetOptionsByName<SimpleQueueCacheOptions>(providerName);
|
var simpleQueueCacheOptions = provider.GetOptionsByName<SimpleQueueCacheOptions>(providerName);
|
||||||
var hashRingStreamQueueMapperOptions = provider.GetOptionsByName<HashRingStreamQueueMapperOptions>(providerName);
|
var hashRingStreamQueueMapperOptions = provider.GetOptionsByName<HashRingStreamQueueMapperOptions>(providerName);
|
||||||
var streamFailureHandler = new RedisStreamFailureHandler(loggerFactory.CreateLogger<RedisStreamFailureHandler>());
|
var streamFailureHandler = new RedisStreamFailureHandler(loggerFactory.CreateLogger<RedisStreamFailureHandler>());
|
||||||
return new RedisStreamFactory(database, loggerFactory, providerName, streamFailureHandler, simpleQueueCacheOptions, hashRingStreamQueueMapperOptions);
|
return new RedisStreamFactory(connMuliplexer, loggerFactory, providerName, streamFailureHandler, simpleQueueCacheOptions, hashRingStreamQueueMapperOptions);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task<IQueueAdapter> CreateAdapter()
|
public Task<IQueueAdapter> CreateAdapter()
|
||||||
{
|
{
|
||||||
return Task.FromResult<IQueueAdapter>(new RedisStreamAdapter(_database, _providerName, _hashRingBasedStreamQueueMapper, _loggerFactory));
|
return Task.FromResult<IQueueAdapter>(new RedisStreamAdapter(_connectionMultiplexer.GetDatabase(), _providerName, _hashRingBasedStreamQueueMapper, _loggerFactory));
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task<IStreamFailureHandler> GetDeliveryFailureHandler(QueueId queueId)
|
public Task<IStreamFailureHandler> GetDeliveryFailureHandler(QueueId queueId)
|
||||||
|
|||||||
@ -10,9 +10,9 @@ var builder = new HostBuilder()
|
|||||||
.UseOrleans(silo =>
|
.UseOrleans(silo =>
|
||||||
{
|
{
|
||||||
silo.UseLocalhostClustering();
|
silo.UseLocalhostClustering();
|
||||||
silo.Services.AddSingleton<IDatabase>(sp =>
|
silo.Services.AddSingleton<IConnectionMultiplexer>(sp =>
|
||||||
{
|
{
|
||||||
return ConnectionMultiplexer.Connect("localhost").GetDatabase();
|
return ConnectionMultiplexer.Connect("localhost");
|
||||||
});
|
});
|
||||||
silo.ConfigureLogging(logging => logging.AddConsole());
|
silo.ConfigureLogging(logging => logging.AddConsole());
|
||||||
silo.AddMemoryGrainStorage("PubSubStore");
|
silo.AddMemoryGrainStorage("PubSubStore");
|
||||||
|
|||||||
@ -2,15 +2,15 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.Orleans.Server" Version="8.1.0" />
|
<PackageReference Include="Microsoft.Orleans.Server" Version="9.0.1" />
|
||||||
<PackageReference Include="Microsoft.Orleans.Streaming" Version="8.1.0" />
|
<PackageReference Include="Microsoft.Orleans.Streaming" Version="9.0.1" />
|
||||||
<PackageReference Include="StackExchange.Redis" Version="2.7.33" />
|
<PackageReference Include="StackExchange.Redis" Version="2.8.24" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user