Использование того же соединения (NATS) внутри службы - PullRequest
1 голос
/ 06 августа 2020

У меня есть служба, которая будет публиковать sh сообщения в NATS в двух разных случаях - на созданном объекте и на обновленном объекте.

В официальном руководстве по NATS издатель всегда создает новое соединение и внутри блок using публикует сообщение и сбрасывает соединения, например:

using (IEncodedConnection connection = new ConnectionFactory().CreateEncodedConnection(options))
{
    c.OnSerialize = jsonSerializer;
    connection.Publish(subject, payload);
    connection.Flush();
}

Однако, читая об этом и с моей точки зрения, мне действительно нужно только одно соединение, которое я могу повторно использовать на протяжении всего срока службы. Реализация этого кажется тривиальной работой:

public class EncodedConnection
{
    private static IEncodedConnection encodedConnection;
    
    private EncodedConnection()
    {

    }
    
    public static IEncodedConnection GetEncodedConnection()
    {
        if (encodedConnection != null)
        {
            return encodedConnection;
        }

        encodedConnection = new ConnectionFactory().CreateEncodedConnection();
        encodedConnection.OnSerialize = jsonSerializer;
        
        return encodedConnection;
    }
}

Мои вопросы:

  • , поскольку я не предоставляю блок using для подключения, безопасно ли его передавать примерно так.

  • Также я должен звонить connection.Flush(); каждый раз, когда я публикую sh сообщение, и если я вызываю flu sh, мне нужно создавать новое соединение, что в основном означает, что Тем не менее, мне каждый раз приходится создавать новое соединение.

...