Skip to content

Commit

Permalink
start (#2)
Browse files Browse the repository at this point in the history
  • Loading branch information
riccardone authored Sep 14, 2019
1 parent f389580 commit 72175c0
Show file tree
Hide file tree
Showing 9 changed files with 188 additions and 2 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
**/appsettings.prod.json

# Build results
[Dd]ebug/
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
# MySelfLogLinker
Simple console app to replicate data from a production EventStore to a local instance
# LinkerConsoleApp
Simple .Net Core console app to replicate data from a production EventStore to a local instance. This is an example of Data Redundancy using Linker nuget package and replicate EventStore instances or clusters across different networks. Edit appsettings.json file to set origin and destination info.
25 changes: 25 additions & 0 deletions src/LinkerConsoleApp.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29209.62
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LinkerConsoleApp", "LinkerConsoleApp\LinkerConsoleApp.csproj", "{65DC6EF9-3BC9-49DE-AB2D-716F269909A8}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{65DC6EF9-3BC9-49DE-AB2D-716F269909A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{65DC6EF9-3BC9-49DE-AB2D-716F269909A8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{65DC6EF9-3BC9-49DE-AB2D-716F269909A8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{65DC6EF9-3BC9-49DE-AB2D-716F269909A8}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {F647AAB1-A0DC-4A82-A1D9-8257190709B5}
EndGlobalSection
EndGlobal
29 changes: 29 additions & 0 deletions src/LinkerConsoleApp/LinkerConsoleApp.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.2</TargetFramework>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="EventStore.Client" Version="5.0.2" />
<PackageReference Include="Linker" Version="1.1.0" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="2.2.4" />
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.2.4" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.2.0" />
<PackageReference Include="NLog" Version="4.6.7" />
<PackageReference Include="NLog.Extensions.Logging" Version="1.5.4" />
</ItemGroup>

<ItemGroup>
<None Update="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="appsettings.prod.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>

</Project>
17 changes: 17 additions & 0 deletions src/LinkerConsoleApp/LinkerSettings.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
namespace LinkerConsoleApp
{
public class Origin
{
public string ConnectionString { get; set; }
public string User { get; set; }
public string Pass { get; set; }
public string ConnectionName { get; set; }
}
public class Destination
{
public string ConnectionString { get; set; }
public string User { get; set; }
public string Pass { get; set; }
public string ConnectionName { get; set; }
}
}
12 changes: 12 additions & 0 deletions src/LinkerConsoleApp/NLog.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<targets>
<target name="logconsole" xsi:type="Console" />
</targets>

<rules>
<logger name="*" minlevel="Debug" writeTo="logconsole" />
</rules>
</nlog>
40 changes: 40 additions & 0 deletions src/LinkerConsoleApp/NLogger.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
using System;
using Linker;
using NLog;

namespace LinkerConsoleApp
{
public class NLogger : ILinkerLogger
{
private static Logger Log = LogManager.GetCurrentClassLogger();
public void Info(string message)
{
Log.Info(message);
}

public void Warn(string message)
{
Log.Warn(message);
}

public void Warn(string message, Exception ex)
{
Log.Warn($"{message}: {ex.GetBaseException().Message}");
}

public void Error(string message)
{
Log.Error(message);
}

public void Error(string message, Exception ex)
{
Log.Error($"{message}: {ex.GetBaseException().Message}");
}

public void Debug(string message)
{
Log.Debug(message);
}
}
}
47 changes: 47 additions & 0 deletions src/LinkerConsoleApp/Program.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
using System;
using System.Collections.Generic;
using System.IO;
using EventStore.ClientAPI;
using EventStore.ClientAPI.SystemData;
using Linker;
using Microsoft.Extensions.Configuration;
using NLog;

namespace LinkerConsoleApp
{
class Program
{
private static Logger Log = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
Log.Info("Building services...");

var env = Environment.GetEnvironmentVariable("CORE_ENVIRONMENT");
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: false)
.AddJsonFile($"appsettings.{env}.json", optional: true, reloadOnChange: false)
.AddEnvironmentVariables();
var config = builder.Build();

var origin = config.GetSection("origin").Get<Origin>();
var destination = config.GetSection("destination").Get<Destination>();
var filterService = new FilterService(new List<Filter>
{
new Filter { FilterOperation = FilterOperation.Exclude, FilterType = FilterType.Stream, Value = "diary-*" },
new Filter { FilterOperation = FilterOperation.Include, FilterType = FilterType.Stream, Value = "*" }
});

var service = new LinkerService(new LinkerConnectionBuilder(new Uri(origin.ConnectionString),
ConnectionSettings.Create().SetDefaultUserCredentials(new UserCredentials(origin.User, origin.Pass)),
origin.ConnectionName), new LinkerConnectionBuilder(new Uri(destination.ConnectionString),
ConnectionSettings.Create().SetDefaultUserCredentials(new UserCredentials(destination.User, destination.Pass)),
destination.ConnectionName), filterService, Settings.Default(), new NLogger());
service.Start().Wait();

Log.Info("Replica Service started");
Log.Info("Press enter to exit the program");
Console.ReadLine();
}
}
}
15 changes: 15 additions & 0 deletions src/LinkerConsoleApp/appsettings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"Environment": "local",
"origin": {
"connectionString": "tcp://localhost:1112",
"user": "admin",
"pass": "changeit",
"connectionName": "origin-01"
},
"destination": {
"connectionString": "tcp://localhost:2112",
"user": "admin",
"pass": "changeit",
"connectionName": "destination-01"
}
}

0 comments on commit 72175c0

Please sign in to comment.