Производитель Kafka - несколько подключений к брокеру против одного глобального подключения - PullRequest
0 голосов
/ 26 июня 2019

Я использую конфликтующий клиент C # для соединения с Kafka и пытаюсь создать API, который мог бы использоваться несколькими существующими приложениями для отправки сообщений в теме.

Теперь я не уверен, стоит ли мне просто создавать новое соединение каждый раз, когда я получаю доступ к API, или создавать глобальное одноэлементное соединение, которое можно использовать повторно каждый раз.Второй подход звучит лучше для меня, поскольку создание соединения при каждом попадании может занимать много времени, но оно также может привести к таким проблемам, как постоянное прерывание соединения и проблема в обработке глобального соединения, которая может быть прервана брокером Kafka.

Ниже приведеноскелет того, о чем я изначально думал:

public class SampleController : ApiController
{
    IProducer<string, string> producer = null;
    public SampleController()
    {
        producer = GetSingletonInstance();
    }

    public async void Post(ProducerRequest request)
    {
        var deliveryReport = await producer.ProduceAsync(request.Topic, new Message<string, string> { Key = request.Key, Value = request.Value });
    }

Пожалуйста, предложите некоторые вещи, которые я должен рассмотреть, если я пойду с подходом глобальной связи

...