Создание хоста процессора концентратора событий в качестве прослушивателя связи в Service Fabric и хранилища Azure в качестве контрольной точки.
Поскольку мне нужно было запустить хост процессора Eventhub в сервисной фабрике, я расширил прослушиватель связи и использовал его жизненный цикл дляуправляющий узел процессора событий.Хотя я знаю, что мог бы иметь StartAsync службы без сохранения состояния, это кажется разумной идеей.Я также попробовал процессор EventHubServiceFabric, который использует Stateful Service вместо хранилища Azure
public class EventHubCommunicationListener : IEventHubCommunicationListener
{
private IEventProcessorFactory eventProcessorFactory;
private IOptions<EventHubConnectionOption> eventHubOptions;
private EventHubProcessorHost eventHubProcessorHost;
public EventHubCommunicationListener(IEventProcessorFactory eventProcessorFactory,
IOptions<EventHubConnectionOption> eventHubOptions)
{
this.eventProcessorFactory = eventProcessorFactory;
this.eventHubOptions = eventHubOptions;
}
public void Abort()
{
eventHubProcessorHost.CloseAsync().Wait();
}
public async Task CloseAsync(CancellationToken cancellationToken)
{
await eventHubProcessorHost.CloseAsync();
}
public async Task<string> OpenAsync(CancellationToken cancellationToken)
{
eventHubProcessorHost = new EventHubProcessorHost
(eventProcessorFactory, eventHubOptions);
await eventHubProcessorHost.Start();
return string.Empty;
}
}
Хотя я достаточно хорошо понимаю SF и знаю, что подход с использованием прослушивателя связи будет работать, я больше беспокоюсь о хранилище Azure в качестве контрольной точки, что еслиХранилище Azure не работает, все мои контрольные точки исчезли.Я могу кешировать последние данные о событиях, чтобы начать заново без использования другого хранилища.Этот подход звучит хорошо?