У меня есть служба, которая будет публиковать 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, мне нужно создавать новое соединение, что в основном означает, что Тем не менее, мне каждый раз приходится создавать новое соединение.