Я пытаюсь заставить мое приложение повторно использовать соединения tcp при отправке сообщений в / из серии концентраторов событий.
Мне удалось сделать это, используя фабрику сообщений для отправителей. Однако я не уверен, как сделать то же самое для получателя.
Это мой код:
private void SetupAcknowledgmentEventHub()
{
// Initialize the Event Hub sender
var acknowledgmentConnectionString = AppSettings.AcknowledgmentConnectionString;
var acknowledgmentEntityPath = AppSettings.AcknowledgmentEntityPath;
var storageAccountName = AppSettings.StorageAccountName;
var storageAccountKey = AppSettings.StorageAccountKey;
var storageConnectionString =
$"DefaultEndpointsProtocol=https;AccountName={storageAccountName};AccountKey={storageAccountKey}";
var eventProcessorHostName = Guid.NewGuid().ToString();
var client = _messagingFactory.CreateEventHubClient(acknowledgmentEntityPath);
var consumerGroup = client.GetConsumerGroup(AppSettings.AcknowledgmentConsumerGroup);
if (consumerGroup == null)
{
var message = $"Consumer group {AppSettings.AcknowledgmentConsumerGroup} does not exist";
Logger.Log.Error(message);
throw new Exception(message);
}
// Initialize the Event Hub receiver
var eventProcessorHost = new EventProcessorHost(
eventProcessorHostName,
acknowledgmentEntityPath,
consumerGroup.GroupName,
acknowledgmentConnectionString,
storageConnectionString,
"checkpoint1");
var options = new EventProcessorOptions()
{
MaxBatchSize = 200000,
PrefetchCount = 300
};
options.ExceptionReceived += (sender, e) =>
{
Logger.Log.Error($"Error {e.Exception} received while trying {e.Action}");
};
eventProcessorHost.RegisterEventProcessorAsync<AcknowledgementEventProcessor>(options).Wait();
}
EventProcessorHost принимает Func в свой конструктор - но я не слишком уверен, как это реализовать?
Как это сделать?