Используя следующий docker -компонентный файл, я запускаю свое. Net Консольное приложение Core 3.1 и контейнер хранилища событий.
version: "3.4"
services:
eventstore:
image: eventstore/eventstore
networks:
- eventnet
ports:
- "2113:2113"
- "1113:1113"
consoleapp4:
image: ${DOCKER_REGISTRY-}consoleapp4
build:
context: .
dockerfile: ConsoleApp4/Dockerfile
depends_on:
- eventstore
networks:
eventnet:
driver: bridge
После сборки / запуска docker -композитного файла Интерфейс EventStore доступен на http://localhost: 2113 ; так что все работает.
Моя консоль очень проста, выглядит так, но при подключении возникают проблемы. Я получаю необработанное исключение типа
'EventStore.ClientAPI.Exceptions.ConnectionClosedException' произошло в System.Private.CoreLib.dll: 'Соединение' MyConName 'было закрыто.':
using System;
using EventStore.ClientAPI;
using Newtonsoft.Json;
namespace ConsoleApp4
{
class Program
{
static void Main(string[] args)
{
var connectionSettings = ConnectionSettings.Create();
connectionSettings.UseConsoleLogger().UseDebugLogger().EnableVerboseLogging().Build();
var connection = EventStoreConnection.Create("ConnectTo=tcp://admin:changeit@localhost:1113", connectionSettings, "MyConName");
connection.Connected += (a, b) =>
{
var x = 3; // Never comes here
};
connection.ErrorOccurred += (a, b) =>
{
var x = 5; // Never comes here
};
connection.ConnectAsync().Wait();
var model = new MyModel();
var item = new EventData(model.Id, model.GetTypeString(), true, model.GetByteArray(), new byte[] { });
// Throws exception 'EventStore.ClientAPI.Exceptions.ConnectionClosedException'
var result = connection.AppendToStreamAsync("mystream", 0, item).GetAwaiter().GetResult();
}
}
class MyModel
{
public Guid Id { get; } = Guid.NewGuid();
public string GetTypeString() => this.GetType().FullName.ToLower();
public byte[] GetByteArray() => System.Text.Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(this));
}
}
У меня есть абсолютно NO подсказка, что делать дальше, поэтому любой указатель будет высоко оценен, это должно быть что-то простое, верно ..?
Я пробовал Powershell сообщает, что другая машина, полностью запущенная sh, пробовала IP-адрес, другой способ настройки строки подключения:
C:\WINDOWS\system32> Test-NetConnection -ComputerName localhost -Port 1113
ComputerName : localhost
RemoteAddress : ::1
RemotePort : 1113
InterfaceAlias : Loopback Pseudo-Interface 1
SourceAddress : ::1
TcpTestSucceeded : True
Редактировать
После изменения моего docker -композитного файла на:
version: '3.4'
services:
myeventstore:
image: eventstore/eventstore
ports:
- "2113:2113"
- "1113:1113"
console:
image: ${DOCKER_REGISTRY-}console
build:
context: .
dockerfile: Console/Dockerfile
depends_on:
- myeventstore
или
version: '3.4'
services:
myeventstore:
image: eventstore/eventstore
ports:
- "2113:2113"
- "1113:1113"
networks:
- eventsnet
console:
image: ${DOCKER_REGISTRY-}console
build:
context: .
dockerfile: Console/Dockerfile
depends_on:
- myeventstore
networks:
- eventsnet
networks:
eventsnet:
driver: bridge
и строку подключения на: myeventstore
все еще безуспешно ...