Package berlin.yuna.natsserver.logic
Class Nats
- java.lang.Object
-
- berlin.yuna.natsserver.logic.Nats
-
- All Implemented Interfaces:
NatsInterface
,AutoCloseable
public class Nats extends Object implements NatsInterface
- Since:
- 1.0
- Author:
- Yuna Morgenstern
- See Also:
SystemUtil
,NatsInterface
-
-
Field Summary
Fields Modifier and Type Field Description protected Map<NatsConfig,MapValue>
configMap
protected String
name
static String
NATS_PREFIX
protected AtomicReference<berlin.yuna.clu.logic.Terminal>
terminal
protected Long
timeoutMs
-
Constructor Summary
Constructors Constructor Description Nats()
Throws all exceptions asNatsStartException
which is aRuntimeException
Possible wrapped exceptions:
IOException
ifNats
is not found or unsupported on theSystemUtil
BindException
if port is already taken
PortUnreachableException
ifNats
is not starting cause port is not freeNats(int port)
Starts the server ifNatsConfig.NATS_AUTOSTART
== true Throws all exceptions asNatsStartException
which is aRuntimeException
Possible wrapped exceptions:
IOException
ifNats
is not found or unsupported on theSystemUtil
BindException
if port is already taken
PortUnreachableException
ifNats
is not starting cause port is not freeNats(NatsOptionsBuilder natsOptions)
Starts the server ifNatsConfig.NATS_AUTOSTART
== true Throws all exceptions asNatsStartException
which is aRuntimeException
Possible wrapped exceptions:
IOException
ifNats
is not found or unsupported on theSystemUtil
BindException
if port is already taken
PortUnreachableException
ifNats
is not starting cause port is not freeNats(NatsOptions natsOptions)
Starts the server ifNatsConfig.NATS_AUTOSTART
== true Throws all exceptions asNatsStartException
which is aRuntimeException
Possible wrapped exceptions:
IOException
ifNats
is not found or unsupported on theSystemUtil
BindException
if port is already taken
PortUnreachableException
ifNats
is not starting cause port is not free
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
addConfig(NatsConfig key, Object value)
protected void
addConfig(ValueSource source, NatsConfig key, String value)
Path
binary()
void
close()
Map<NatsConfig,String>
config()
Path
configFile()
Path
configPropertyFile()
String[]
customArgs()
boolean
debug()
protected void
deletePidFile()
protected Path
downloadNats()
String
downloadUrl()
Nats download url which is usually a zip fileString
getValue(NatsConfig key)
Gets resolved config value from keyString
getValue(NatsConfig key, Supplier<String> or)
Gets resolved config value from keyboolean
jetStream()
Logger
logger()
Level
loggingLevel()
int
pid()
get process idPath
pidFile()
get process id file which only exists when the process is runningint
port()
protected String
prepareCommand()
Process
process()
protected void
sendStopSignal()
protected void
setConfigFromNatsOptions(NatsOptions natsOptions)
protected void
setConfigFromProperties()
protected void
setDefaultConfig()
protected void
setEnvConfig()
protected int
setNextFreePort()
protected void
shutdown()
Nats
start()
Starts the server if not already started e.g.protected void
startProcess(String command)
String
toString()
String
url()
nats server URL from bind to host addressprotected void
waitForShutDown(long timeoutMs)
-
-
-
Field Detail
-
name
protected final String name
-
timeoutMs
protected final Long timeoutMs
-
configMap
protected final Map<NatsConfig,MapValue> configMap
-
terminal
protected final AtomicReference<berlin.yuna.clu.logic.Terminal> terminal
-
NATS_PREFIX
public static final String NATS_PREFIX
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
Nats
public Nats()
Throws all exceptions asNatsStartException
which is aRuntimeException
Possible wrapped exceptions:
IOException
ifNats
is not found or unsupported on theSystemUtil
BindException
if port is already taken
PortUnreachableException
ifNats
is not starting cause port is not free
-
Nats
public Nats(int port)
Starts the server ifNatsConfig.NATS_AUTOSTART
== true Throws all exceptions asNatsStartException
which is aRuntimeException
Possible wrapped exceptions:
IOException
ifNats
is not found or unsupported on theSystemUtil
BindException
if port is already taken
PortUnreachableException
ifNats
is not starting cause port is not free- Parameters:
port
- the port to start on or <=0 to use an automatically allocated port
-
Nats
public Nats(NatsOptionsBuilder natsOptions)
Starts the server ifNatsConfig.NATS_AUTOSTART
== true Throws all exceptions asNatsStartException
which is aRuntimeException
Possible wrapped exceptions:
IOException
ifNats
is not found or unsupported on theSystemUtil
BindException
if port is already taken
PortUnreachableException
ifNats
is not starting cause port is not free- Parameters:
natsOptions
- nats options
-
Nats
public Nats(NatsOptions natsOptions)
Starts the server ifNatsConfig.NATS_AUTOSTART
== true Throws all exceptions asNatsStartException
which is aRuntimeException
Possible wrapped exceptions:
IOException
ifNats
is not found or unsupported on theSystemUtil
BindException
if port is already taken
PortUnreachableException
ifNats
is not starting cause port is not free- Parameters:
natsOptions
- nats options
-
-
Method Detail
-
start
public Nats start()
Starts the server if not already started e.g. byNatsConfig.NATS_AUTOSTART
== true
TThrows all exceptions asNatsStartException
which is aRuntimeException
Possible wrapped exceptions:
IOException
ifNats
is not found or unsupported on theSystemUtil
BindException
if port is already taken
PortUnreachableException
ifNats
is not starting cause port is not free- Returns:
Nats
-
process
public Process process()
- Specified by:
process
in interfaceNatsInterface
-
customArgs
public String[] customArgs()
- Specified by:
customArgs
in interfaceNatsInterface
-
logger
public Logger logger()
- Specified by:
logger
in interfaceNatsInterface
-
loggingLevel
public Level loggingLevel()
- Specified by:
loggingLevel
in interfaceNatsInterface
-
binary
public Path binary()
- Specified by:
binary
in interfaceNatsInterface
- Returns:
- Path to binary file
seeNatsConfig.NATS_BINARY_PATH
-
port
public int port()
- Specified by:
port
in interfaceNatsInterface
- Returns:
- Port (if <=0, the port will be visible after
start()
- see alsoNatsConfig.NATS_AUTOSTART
)
seeNatsConfig.PORT
-
jetStream
public boolean jetStream()
- Specified by:
jetStream
in interfaceNatsInterface
- Returns:
- true if Jetstream is enabled
seeNatsConfig.JETSTREAM
-
debug
public boolean debug()
- Specified by:
debug
in interfaceNatsInterface
- Returns:
- true if "DV", "DVV" or "DEBUG" is set
seeNatsConfig.DV
seeNatsConfig.DVV
seeNatsConfig.DEBUG
-
configFile
public Path configFile()
- Specified by:
configFile
in interfaceNatsInterface
- Returns:
- custom nats config file
seeNatsConfig.CONFIG
-
configPropertyFile
public Path configPropertyFile()
- Returns:
- custom property config file
seeNatsConfig.NATS_PROPERTY_FILE
-
close
public void close()
- Specified by:
close
in interfaceAutoCloseable
-
getValue
public String getValue(NatsConfig key)
Gets resolved config value from key- Parameters:
key
- config key- Returns:
- config key value
-
getValue
public String getValue(NatsConfig key, Supplier<String> or)
Gets resolved config value from key- Parameters:
key
- config keyor
- lazy loaded fallback value- Returns:
- config key value
-
pid
public int pid()
get process id- Returns:
- process id or -1 if process is not running
-
pidFile
public Path pidFile()
get process id file which only exists when the process is running- Returns:
- process id file path
-
downloadUrl
public String downloadUrl()
Nats download url which is usually a zip file- Returns:
- nats download url
-
url
public String url()
nats server URL from bind to host address- Specified by:
url
in interfaceNatsInterface
- Returns:
- nats server url
-
config
public Map<NatsConfig,String> config()
- Returns:
- nats configuration
-
setConfigFromNatsOptions
protected void setConfigFromNatsOptions(NatsOptions natsOptions)
-
setConfigFromProperties
protected void setConfigFromProperties()
-
setDefaultConfig
protected void setDefaultConfig()
-
setEnvConfig
protected void setEnvConfig()
-
addConfig
protected void addConfig(NatsConfig key, Object value)
-
addConfig
protected void addConfig(ValueSource source, NatsConfig key, String value)
-
setNextFreePort
protected int setNextFreePort()
-
downloadNats
protected Path downloadNats() throws IOException
- Throws:
IOException
-
prepareCommand
protected String prepareCommand()
-
shutdown
protected void shutdown()
-
sendStopSignal
protected void sendStopSignal()
-
waitForShutDown
protected void waitForShutDown(long timeoutMs)
-
deletePidFile
protected void deletePidFile()
-
startProcess
protected void startProcess(String command)
-
-