Как я могу использовать фабрику с EventProcessorHost в ServiceBus.Messaging? - PullRequest
0 голосов
/ 02 ноября 2018

Я пытаюсь заставить мое приложение повторно использовать соединения 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 в свой конструктор - но я не слишком уверен, как это реализовать?

Как это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...