The StreamBase Java Client library uses the Java system properties described on this
page. You can set properties on the Java command line using -Dproperty-name=value when you start a StreamBase client, or you can
set the property in your Java client code using the System.setProperty() method.
The following example shows command line usage:
java -Dstreambase.tuple-connection-timeout=4000 \
-Dstreambase.reconnect-sleep=7000 MyClient
Or, in your Java client code:
System.setProperty("streambase.tuple-connection-timeout", "4000");
Note
Each system property on this page can also be implemented as an environment variable.
If both environment variable and system property are specified for the same setting,
the system property prevails. To convert a system property from the table below to an
environment variable, uppercase all letters, and substitute an underbar for periods
and hyphens. For example, convert streambase.tcp-nodelay
to STREAMBASE_TCP_NODELAY.
The following table describes the StreamBase Java system properties.
| Property Name | ||||
|---|---|---|---|---|
| Description | ||||
streambase.appgen.error-schema-version
|
||||
Set to 1 to emit error tuples using the pre-7.1 schema, with the orginalTuple field emitted as a blob. Set to 2 (the default in
StreamBase 7.1.0 or later) to emit error tuples using the 7.1+ schema, with
originalTuple emitted as a JSON object string.
|
||||
streambase.check-app-environment-variables-changed
|
||||
Set to true or false.
When true, StreamBase Server runs the precompiled
archive file present in a bundled archive file it is asked to run, and does not
recompile the EventFlow or StreamSQL source files in the bundle.
Under some circumstances, StreamBase Server can emit warning messages at startup that indicate an environment variable has changed since the application was compiled. In most cases, these warnings have no consequences and can be ignored. However, when the server is loading a bundle file that includes a precompiled archive file, an environment variable warning message has the unintended side effect that the server ignores the bundled archive file and recompiles the application from the bundled source files. The bundled application does run normally, but for very large applications, at the cost of the recompilation time. |
||||
streambase.client.max-tuples-in-queue
|
||||
| Specify an integer maximum number of tuples allowed in the client connection queue, to promote better client behavior. The default value is 10000 tuples. This Java property also affects the queue of incoming tuples when using the StreamBase to StreamBase input adapter. | ||||
streambase.codegen.trace-tuples
|
||||
Set to true or false.
When true, you can use the runtime tracing
features of StreamBase Server, as described in Runtime Tracing and Creating
Trace Files.
|
||||
|
||||
Use these properties together to specify that StreamBase Server is to use an
external javac command to compile
EventFlow and StreamSQL instructions to byte code, instead of using an internal
compilation process (the default). Using an external compiler can increase the
memory available for large applications on memory-constrained systems, such as
32-bit Windows. To specify this option, set both compileinprocess and jarinprocess
to false, and set generate-bytecodes to javac.
Using these three system properties is the same as selecting the Compile StreamBase application in separate process option on
the Main tab of StreamBase Studio's Launch
Configuration dialog.
|
||||
streambase.codegen.digest-type-names
|
||||
Set to true or false;
the default is true. Some file systems supported
by StreamBase restrict the maximum length of file names. To avoid hitting these
limits, StreamBase uses a hash to shorten the internal names of code generated
by compiling EventFlow XML and StreamSQL code, and to avoid name collisions in
that internal code namespace. These shortened names make debugging StreamBase
internal code more difficult. Set this property to true to temporarily disable internal code name shortening to
improve readability while debugging, at the cost of occasionally encountering a
file name collision or length restriction.
|
||||
streambase.codegen.intermediate-stream-dequeue-regex
|
||||
Limits the number of output streams the application will expose when running in
debug mode, by setting the server's JVM property to include the this property
set to a regular expression pattern, using an argument of the form regex=
For example, you can set the JVM arguments to include a pattern like the following: -Dstreambase.codegen.intermediate-stream-dequeue-regex=Map\\d This allows any intermediate stream that contains the pattern of "a Map followed by a digit" to be exposed as a dequeueable stream. All other intermediate streams normally available in debug mode will not be available. |
||||
streambase.ide.component-exchange-force-auth
|
||||
Set to true or false.
Use this property in conjunction with the site-specific Component Exchange
feature described in StreamBase Studio Panel and Site-Specific Component Exchange. If you supply a URL that begins
with HTTPS or FTP, Studio automatically prompts for credentials. If you supply
a URL for another protocol, you can force authentication prompting for that
protocol by setting this property to true for the
VM that runs Studio.
|
||||
streambase.jdbc.max-repeat-exceptions
|
||||
The default value of 1 tells StreamBase Server that a single instance of a JDBC
exception is regarded as an exception. Specify zero to mean that JDBC
exceptions can be repeated without limit. Use an integer, n, greater than 1 to specify that JDBC
exceptions might occur n times before
succeeding.
|
||||
streambase.log-adapter-async
|
||||
Set to true or false.
Use this property to set the synchronous state of all Log adapter instances in
an application at the same time, without having to edit the Properties view for
all Log adapters in the application. Set to true
to force all Log adapters to enable the Log
Asynchronously option. Set to false to
restore the default synchronous state of all Log adapters. See The Log Asynchronously Option.
|
||||
streambase.log-level
|
||||
Specify an integer value, one of -2, -1, 0, 1, 2, or 3. Sets the severity of log messages emitted by the standard
StreamBase logging mechanism, Logback. See the table Log Levels for a
mapping of integer keys to logging levels. The default is 0, which provides INFO level
messages and higher.
|
||||
streambase.low-latency-mode
|
||||
Set to true or false;
false is the default. This switch provides a
single switch that enables several other properties to direct StreamBase Server
to run in low latency configuration. Setting this property to true performs the following subordinate actions:
|
||||
streambase.operator.parameters.log-level
|
||||
|
Specify an integer corresponding to the StreamBase log level in which you want
operator property log entries included. Specify 0=OFF to disable this feature,
or specify 1=ERROR, 2=WARN, or 3=INFO.
When set to 1, 2, or 3, StreamBase log messages include entries for each property setting for all operators and adapters that inherit from the Operator class in the StreamBase Client Library. This includes any custom Java operators and most adapters, but does not include global operators such as the Map or Filter operators included with StreamBase. The messages are sent from the Operator caretaker class, and are in the format of the following example, where this setting was set to 1: 2010-12-01 12:58:28.030-0500 [Thread-4] ERROR \ c.s.sb.runtime.OperatorCaretakerImpl - \ Operator: OrderInput, Parameter: OrderManagementPort, \ Value: 8889 Values set with variables in the operator or adapter's Properties view are shown with the variable's runtime expansion. For example, the value of the OrderManagementPort property in this example was specified with ${MGMTPORT} but is shown in the log message with its runtime value, 8889. If an adapter uses an adapter-specific configuration file, the file's name is shown as a property setting. However, the contents of such configuration files are not shown. |
||||
streambase.max-queue-size
|
||||
| Specify an integer number of result sets, the maximum size of the queue that a StreamBase client is to maintain when dequeuing result sets. Each result set entry contains a list of tuples. The default is 500 result sets. | ||||
streambase.max-stat-tuples-cache
|
||||
Specify an integer number of tuples, the default maximum size of the
system.statv2 stream's tuple cache, which grows
dynamically as needed by the application. The default value of –1 means the statistics stream cache can grow as large as
needed, limited only by available memory. (For StreamBase releases before 7.0,
the statistics stream was named system.stat.)
|
||||
streambase.queue-flush-interval
|
||||
| Specify an integer number of milliseconds to wait between queue flushes for client connections. The default is 20. Set this value to a lower number to improve latency. While setting this value to 0 does minimize latency, a zero setting may have an impact on the system load. | ||||
streambase.read-buf-size
|
||||
| Specify an integer number of bytes, the default read buffer size used by the client when dequeuing tuples. Changing this value may have an effect on client dequeue performance. The default value is 32768 (32K or 32*1024). | ||||
streambase.reconnect-sleep
|
||||
| Specify an integer number of milliseconds to set how often a StreamBase client should try to reconnect to the primary or secondary StreamBase Server in a high availability StreamBase environment when the connection to the server is dropped. The default is 5000 (5 seconds). | ||||
streambase.runtime.send-zero-stats
|
||||
Set to true or false.
The default setting is true, which means the
statv2 stream of the system container includes tuples with zero values. Set this
property to false to exclude zero value tuples
from the system.statv2 stream (or the system.stat stream in StreamBase releases before 7.0). This
excludes zero value tuples from consideration in the statistics shown by
StreamBase Monitor
and StreamBase Manager.
|
||||
streambase.sbd.max-input-packet-size
|
||||
| Specify an integer maximum number of bytes per packet, the maximum limit sent to the server in a client enqueue connection. The default value is 67108864 (64 MB, or 64*1024*1024). | ||||
streambase.sbd.max-tuples-in-dequeue-packet
|
||||
Specify an integer maximum number of packets the server includes in any one
dequeue packet. The default value is 10000, which matches the default of the
streambase.client.max-tuples-in-queue property
described above. Administrators can set both server and client with matching
values to make sure client dequeues are not overwhelmed.
|
||||
streambase.sbd-shrink-after-process
|
||||
Set to true or false;
the default setting is false. Set to true for servers with dozens of StreamBase client connections.
This forces client buffers to shrink after each use instead of remaining a
fixed size, which reduces the overall memory footprint of the server, at the
expense of higher memory churn and consequent garbage collection.
|
||||
streambase.tcp-nodelay
|
||||
| Set to any value, such as 1, to disable the Nagle algorithm for StreamBase Server and for StreamBase clients. The Nagle algorithm is a throughput optimization implemented by default in the TCP/IP network code of the Server and Client Libraries. The algorithm adds about 40 milliseconds of latency on Linux and about 200 milliseconds on Windows. Make this setting independently for Server and clients. | ||||
streambase.tuple-connection-quiescent-limit
|
||||
Specify an integer number of milliseconds, the timeout value for how long a
Java StreamBase dequeuing client tolerates not receiving anything from the
StreamBase Server to which it is connected. The default value is 120000, or 120 seconds. By default, StreamBase Servers emit
client heartbeats every 10 seconds, so that StreamBase applications have no
requirement to send data regularly. StreamBase Servers can be configured to
send heartbeats faster, slower, or not at all. The quiescent timer only starts
after the first heartbeat is received. Thus, if a server never sends a
heartbeat, clients do not have quiescent protection.
|
||||
streambase.tuple-connection-timeout
|
||||
|
Specify an integer number of milliseconds. In a high availability StreamBase
application environment, this property sets a timeout value on reads and writes
between the client and server. This timeout is used by the client to recognize
failure of the server. The default value is 15000 (15 seconds). A value of 0
disables the timeout (some operations will block forever).
Consider carefully when using this property. A timeout value too long may cause the client to hang for that period before it fails over to the other server. Too short of a value may cause the client to disconnect prematurely from the server if the server is busy. |
||||
streambase.uri
|
||||
Overrides the default URI of the StreamBase Server instance to which
connections are to be made. The default is sb://localhost:10000. See sburi for the syntax of StreamBase URIs.
|
||||
streambase.write-buf-size
|
||||
| Specify an integer number of bytes, the default read buffer size used by the client when enqueuing tuples. Changing this value may have an effect on client enqueue performance. The default value is 32768 (32K or 32*1024). | ||||
streambase.xmlrpc-timeout
|
||||
| Specify an integer number of milliseconds to set a timeout value that clients built with the StreamBase Client Library are to wait for a response from StreamBase Server. This setting applies in the rare case when the server is alive and listening, but not responding. The default value is zero, which specifies no timeout. | ||||
