Add new redis connection getting data from environment variable
This commit is contained in:
parent
b30d09fbf5
commit
c23d2551cd
@ -4,7 +4,6 @@ using Newtonsoft.Json;
|
||||
using StackExchange.Redis;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Microsoft.eShopOnContainers.Services.Basket.API.Model
|
||||
@ -16,12 +15,10 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API.Model
|
||||
|
||||
private ConnectionMultiplexer _redis;
|
||||
|
||||
|
||||
public RedisBasketRepository(IOptionsSnapshot<BasketSettings> options, ILoggerFactory loggerFactory)
|
||||
{
|
||||
_settings = options.Value;
|
||||
_logger = loggerFactory.CreateLogger<RedisBasketRepository>();
|
||||
|
||||
}
|
||||
|
||||
public async Task<bool> DeleteBasketAsync(string id)
|
||||
@ -93,21 +90,12 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API.Model
|
||||
}
|
||||
|
||||
private async Task ConnectToRedisAsync()
|
||||
{
|
||||
// TODO: Need to make this more robust. ConnectionMultiplexer.ConnectAsync doesn't like domain names or IPv6 addresses.
|
||||
if (IPAddress.TryParse(_settings.ConnectionString, out var ip))
|
||||
{
|
||||
_redis = await ConnectionMultiplexer.ConnectAsync(ip.ToString());
|
||||
_logger.LogInformation($"Connecting to database at {_settings.ConnectionString}");
|
||||
}
|
||||
else
|
||||
{
|
||||
// workaround for https://github.com/StackExchange/StackExchange.Redis/issues/410
|
||||
var ips = await Dns.GetHostAddressesAsync(_settings.ConnectionString);
|
||||
_logger.LogInformation($"Connecting to database {_settings.ConnectionString} at IP {ips.First().ToString()}");
|
||||
_redis = await ConnectionMultiplexer.ConnectAsync(ips.First().ToString());
|
||||
}
|
||||
{
|
||||
var configuration = ConfigurationOptions.Parse(_settings.ConnectionString, true);
|
||||
configuration.ResolveDns = true;
|
||||
|
||||
_logger.LogInformation($"Connecting to database {configuration.SslHost}.");
|
||||
_redis = await ConnectionMultiplexer.ConnectAsync(configuration);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -16,11 +16,8 @@ using Microsoft.Extensions.HealthChecks;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Options;
|
||||
using RabbitMQ.Client;
|
||||
using StackExchange.Redis;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Threading.Tasks;
|
||||
using System;
|
||||
using StackExchange.Redis;
|
||||
|
||||
namespace Microsoft.eShopOnContainers.Services.Basket.API
|
||||
{
|
||||
@ -64,12 +61,12 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API
|
||||
services.AddSingleton<ConnectionMultiplexer>(sp =>
|
||||
{
|
||||
var settings = sp.GetRequiredService<IOptions<BasketSettings>>().Value;
|
||||
var ips = Dns.GetHostAddressesAsync(settings.ConnectionString).Result;
|
||||
var configuration = ConfigurationOptions.Parse(settings.ConnectionString, true);
|
||||
configuration.ResolveDns = true;
|
||||
|
||||
return ConnectionMultiplexer.Connect(ips.First().ToString());
|
||||
return ConnectionMultiplexer.Connect(configuration);
|
||||
});
|
||||
|
||||
|
||||
services.AddSingleton<IRabbitMQPersistentConnection>(sp =>
|
||||
{
|
||||
var settings = sp.GetRequiredService<IOptions<BasketSettings>>().Value;
|
||||
|
Loading…
x
Reference in New Issue
Block a user