Browse Source

Add new redis connection getting data from environment variable

pull/235/head
Christian Arenas 7 years ago
parent
commit
c23d2551cd
2 changed files with 10 additions and 25 deletions
  1. +6
    -18
      src/Services/Basket/Basket.API/Model/RedisBasketRepository.cs
  2. +4
    -7
      src/Services/Basket/Basket.API/Startup.cs

+ 6
- 18
src/Services/Basket/Basket.API/Model/RedisBasketRepository.cs View File

@ -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);
}
}
}

+ 4
- 7
src/Services/Basket/Basket.API/Startup.cs View File

@ -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…
Cancel
Save