Init initializes the global NATS client.
It reads NATS configuration from config.App.NatsConfig.
If NATS is not enabled, it returns nil.
The function is thread-safe and ensures the client is initialized only once.
New returns a new NATS client instance with given configuration.
It's the caller's responsibility to close the client,
caller should always call Close() when it's no longer needed.