Поскольку я впервые пользуюсь GetEventStore и прочитал документацию, у меня возникла проблема, из-за которой события никогда не появляются в моем клиенте подписки.
Это возможно из-за шага настройки, который я пропустил.
Наличие этого клиента консольного приложения:
public class EventStoreSubscriptionClient : ISubscriptionClient
{
private const string GroupName = "liner";
private const string StreamName = "$ce-happening";
private readonly IProvideEventStoreConnection _eventStoreConnection;
private readonly UserCredentials _userCredentials;
private EventStorePersistentSubscriptionBase EventStorePersistentSubscriptionBase { get; set; }
public EventStoreSubscriptionClient(IProvideEventStoreConnection eventStoreConnection, UserCredentials userCredentials)
{
_eventStoreConnection = eventStoreConnection;
_userCredentials = userCredentials;
}
public void Connect()
{
var connection = _eventStoreConnection.ConnectAsync().Result;
EventStorePersistentSubscriptionBase = connection.ConnectToPersistentSubscription(
StreamName,
GroupName,
EventAppeared,
SubscriptionDropped,
_userCredentials,
10,
false
);
}
private void SubscriptionDropped(EventStorePersistentSubscriptionBase subscription, SubscriptionDropReason reason, Exception ex)
{
Connect();
}
private async void EventAppeared(EventStorePersistentSubscriptionBase subscription, ResolvedEvent resolvedEvent)
{
Console.WriteLine("Event appeared: " + resolvedEvent.Event.EventId);
}
public void Dispose()
{
EventStorePersistentSubscriptionBase.Stop(TimeSpan.FromSeconds(15));
}
}
После запуска этого консольного приложения соединение с http://myserver:1113 устанавливается нормально. В панели администрирования моего магазина событий я вижу, что на вкладке конкурирующих потребителей есть подключение к этому потоку/группе:
Но если я отправлю событие, подобное happening-<guid>
, оно появится в потоковом браузере, но мой клиент подписки никогда не получит событие event appeared
:
Я неправильно понял, как работают подписки, потоки и группы? Пожалуйста, просветите меня.