The advanced parameters of MigratoryData are described below.
RunAsUser
Description | Specify the unprivileged (normal) user to run MigratoryData |
Default value | No default value |
Required parameter | Optional |
For example, if migratorydata
is an existing normal user,
then you could configure MigratoryData to run as a normal
user as follows:
RunAsUser = migratorydata
Then, start MigratoryData as root
(this is
necessary to be able to bind on the privileged ports 80
or
443
). Please note that while running as root,
MigratoryData will not accept any client connections. Then,
MigratoryData will drop the root privileges (using the system
call setuid
) and will automatically switch to the normal
user migratorydata
. Only at this time, MigratoryData
Server will start to accept client connections.
PublishAllowFromAddressList
Description | Define the list of IP addresses allowed for message publication |
Default value | No default value |
Required parameter | Optional |
If this parameter is configured, then MigratoryData will accept message publications only from the clients running on any of the IP addresses defined by this parameter.
If this parameter is not set, message publication will be allowed from any client provided however that the client is allowed by the entitlement rules you define (see the Entitlement parameter).
ipv4_address/mask
is also supported where the ipv4_address
is an IPv4 dotted decimal address
and the mask
suffix is a number between 1
and 32
. The mask
suffix is
optional, its default value is 32
. For example, by configuring in the MigratoryData server the following:
PublishAllowFromAddressList = 192.168.5.23, 10.0.0.0/24
only the publishers from the IP addresses from 10.0.0.0
to 10.0.0.255
, as well as from the IP address 192.168.5.23
,
are allowed to publish messages to the MigratoryData server.
Native.Ssl
Description | Specify whether to use OpenSSL for native TLS/SSL communication |
Default value | false |
Required parameter | Optional |
This parameter can have two values: true
or false
. If set on true
,
then MigratoryData will use the OpenSSL library for TLS/SSL
support. The OpenSSL library provides a better implementation of TLS/SSL
in terms of memory and CPU usage compared to the default implementation
of Java. While this difference might not be substantial for small or
medium MigratoryData deployments, for large MigratoryData deployments
with millions of users, it is recommended to use OpenSSL.
MaxCachedMessagesPerSubject
Description | The number of the most recent messages to be cached |
Default value | 1000 |
Required parameter | Optional |
For each subject, the MigratoryData maintains an in-memory cache. Messages are removed continuously from the cache of each subject, however each message is held in the cache up to the number of messages defined by this parameter or at least for the number of seconds defined by the parameter CacheExpireTime, whichever comes first..
This parameter applies only if the Guaranteed Message Delivery feature is enabled, see the parameter ClusterDeliveryMode for more details.
SnapshotExpireTime
Description | The number of seconds to persist a snapshot message |
Default value | 0 |
Required parameter | Optional |
The MigratoryData server saves a snapshot message in memory for every subject. By default, the snapshot message is persisted in memory for an indefinite period. However, you can specify a limit on the retention time of the snapshot messages using this parameter.
This feature is especially helpful when new subjects are continuously added to the system, but they are not updated after a certain time. Without a time limit, the snapshot messages of these inactive subjects would accumulate in memory, leading to potential memory issues.
CacheExpireTime
Description | The number of seconds to cache a message |
Default value | 180 |
Required parameter | Optional |
For each subject, the MigratoryData maintains an in-memory cache. Messages are removed continuously from the cache of each subject, however each message is held in the cache up to the number of messages defined by the parameter MaxCachedMessagesPerSubject or at least for the number of seconds defined by this parameter, whichever comes first.
This parameter applies only if the Guaranteed Message Delivery feature is enabled, see the parameter ClusterDeliveryMode for more details.
Workgroups
Description | The number of groups of clients |
Default value | The number of total CPU cores available |
Required parameter | optional |
In order to better scale on multiprocessor hardware the incoming users are separated in groups. This parameter configures the number of groups (every group has a dedicated thread). If not supplied the total CPU cores available is the default value. In most situations it is not recommended to modify the default value.
IoThreads
Description | The number of threads used for I/O processing |
Default value | The number of total CPU cores available |
Required parameter | Optional |
If not supplied the number of total CPU cores available is the default value. In most situations it is not recommended to modify the default value.
Stats.LogInterval
Description | Specify the time interval in seconds to log various statistics |
Default value | 60 |
Required parameter | Optional |
The minimum value of this parameter is 5
seconds. The format of the
stats logs is as follows:
[timespamp] [S] [INFO] [STATS] {
connectedSessions,\
connectedSessionsWeb,\
connectedSessionsMobile,\
connectedSessionsDesktop,\
sessionConnectionsPerSecond,\
sessionDisconnectionsPerSecond,\
inPublishMessagesPerSecond,\
outPublishMessagesPerSecond,\
inBytesPerSecond,\
outBytesPerSecond,\
clientInPublishMessagesPerSecond,\
connectRateRecoverySuccessPerSecond,\
connectRateRecoveryFailPerSecond,\
clientPublishFailedPerSecond\
}
MaxBatchingSpace
Description | The maximum size of the batching in bytes |
Default value | 0 |
Required parameter | Optional |
Batching is the process of collecting messages together for a period of time or until a maximum size is reached before sending them in a single I/O operation to a client.
Once enabled with this parameter MaxBatchingSpace or with MaxBatchingTime, MigratoryData will not send every message individually to the client, instead it will send messages in batches, thus MigratoryData will perform a single I/O network operation for a single batch. The following diagram shows the circulation of messages without batching (left) and with batching (right):
Depending on your use case, especially if subjects are systematically updated at a high frequency (multiple messages per second), then batching can optimize the network I/O.
If this parameter is not configured or configured with the default value 0
, then batching by space is disabled.
MaxBatchingTime
Description | The maximum time of the batching in milliseconds |
Default value | 0 |
Required parameter | Optional |
Refer to the parameter MaxBatchingSpace to learn about batching.
If this parameter is not configured or configured with the default value 0
, then batching by time is disabled.
SslProtocols
Description | Enable one or more SSL protocols |
Default value | TLSv1.2, TLSv1.1, TLSv1 for Java 8 |
Required parameter | Optional |
For Java 8, the following TLS/SSL protocols are configured by default TLSv1.2, TLSv1.1, TLSv1
. You can change the
default list of TLS/SSL protocols by using this parameter. For example, to enable only the TLSv1.2
protocol, configure
this parameter as follows:
SslProtocols = TLSv1.2
CipherListEnabled
Description | Enable one or more SSL ciphers besides the default JVM ciphers |
Default value | No default value |
Required parameter | Optional |
Use this parameter to enable one or more supported ciphers not enabled by default. For example:
CipherListEnabled = \
TLS_DHE_RSA_WITH_AES_128_CBC_SHA, \
TLS_DHE_DSS_WITH_AES_128_CBC_SHA
CipherListExcluded
Description | Exclude one or more SSL ciphers from the default JVM ciphers |
Default value | No default value |
Required parameter | Optional |
Use this parameter to exclude one or more ciphers enabled by default. For example:
CipherListEnabled = \
TLS_DHE_RSA_WITH_AES_128_CBC_SHA, \
TLS_DHE_DSS_WITH_AES_128_CBC_SHA
MaxMessageSize
Description | The maximum message size in bytes |
Default value | 65536 (64 KB) |
Required parameter | Optional |
This parameter specifies the maximum number of bytes a message should have (including the protocol overhead) to be accepted by MigratoryData. A client which sends a message larger than this size will be automatically disconnected.
NOTIFY_MESSAGE_SIZE_LIMIT_EXCEEDED
.
MaxBandwidthRate
Description | Specifies the maximum bandwidth rate in bytes/second |
Default value | 0 |
Required parameter | Optional |
This parameter specifies the maximum bandwidth rate – in bytes per second (B/s) – that the MigratoryData server is allowed to consume from the available network bandwidth capacity to push messages to clients. If zero is specified, the bandwidth rate will not be limited (this is the default value).
This parameter is particularly useful for use cases where, occasionally,
the outgoing message throughput is higher than the available network
bandwidth capacity. Suppose the MigratoryData server is installed on a
machine with a network bandwidth capacity of 1 Gbps (i.e. 125 MB/s),
and supposing there are one or more large messages to be delivered to a
large number of users, producing an outgoing data volume of 1250 MB. By
configuring this parameter at 125 MB/s ( MaxBandwidthRate=1000000000
),
the assumed available network capacity, the MigratoryData server will be
able to deliver that volume of data during 10 seconds, and then operate
normally, with low message latency. Otherwise, without configuring this
parameter, the system might be severely impacted - as the capacity of the
kernel’s socket buffers could be exhausted.
Note that configuring this parameter could be useful not only for the use cases discussed above. It can be used as a protection against the deliberate or accidental exceeding of the available network bandwidth capacity for any other use case.
For most cases, this parameter should be configured to be equal to the available network bandwidth capacity.
Extension.InteractivePublishing
Description | Enable the interactive publishing add-on |
Default value | false |
Required parameter | Optional |
The interactive publishing add-on is preinstalled
in the MigratoryData server, but it is disabled by default. To enable it, set this parameter on true
.
Extension.InteractivePublishing.Token
Description | Entitlement token used by the interactive publishing add-on |
Default value | No default value |
Required parameter | Required if Extension.InteractivePublishing is set on true |
In a MigratoryData cluster, the interactive publishing add-on of a cluster node communicates with the interactive publishing add-ons of the other cluster nodes, as well as with the interactive publishers of the MigratoryData cluster using a number of meta-subjects, subjects which start with the following subject prefix:
/__migratorydata__/ipub/
If the parameter Entitlement is set on Basic
or
None
, then configure this parameter with the value of the parameter
EntitlementAllowToken. If the parameter
Entitlement is set on JWT
, then
configure this parameter with a JWT token that includes in the list all
under its section permissions
,
the following wildcard subject /__migratorydata__/ipub/*
. Finally, if the parameter
Entitlement is set on Custom
,
then configure this parameter with any entitlement token, provided that your entitlement rules authorize it for
subscriptions and publications on all subjects which start with the prefix /__migratorydata__/ipub/
.
Basic
or None
, then you can use the value of the parameter
EntitlementAllowToken as the
entitlement token of your interactive publisher. If the parameter Entitlement
is set on JWT
, then use a JWT token that includes in the list all
under its section permissions
the wildcard subject /__migratorydata__/ipub/*
as the
entitlement token of your interactive publisher. Finally, if the
Entitlement parameter is set on
Custom
, then use any entitlement token for your interactive publisher, provided
that your entitlement rules authorize it for subscriptions and publications on all subjects which start with the prefix /__migratorydata__/ipub/
.
Extension.Presence
Description | Specify whether to enable the presence extension or not |
Default value | false |
Required parameter | Optional |
Set this parameter on true
to enable the presence extension built with the Server Extensions API for Presence and
deployed under the folder extensions
of your MigratoryData installation.
Extension.Presence.Subject
Description | Subject used to replicate presence information across the cluster |
Default value | /__migratorydata__/presence |
Required parameter | Optional |
Whenever a user connects to or disconnects from a cluster member or changes its list of subscribed subjects (by subscribing to and unsubscribing from them), a presence event is provided to the presence extension of that cluster member. Furthermore, this presence event propagates across the entire MigratoryData cluster, ensuring that each cluster member’s presence extension receives this presence event.
Internally, MigratoryData uses its client library to replicate presence updates across the cluster. Each cluster member subscribes to the subject defined by this parameter. Whenever a user connects to or disconnects from a cluster member, that cluster member publishes a presence event on the subject defined by this parameter.
Extension.Presence.EntitlementToken
Description | Entitlement token used for presence replication across the cluster |
Default value | the value of the parameter EntitlementAllowToken |
Required parameter | Optional |
As detailed in the description of the parameter Extension.Presence.Subject, MigratoryData replicates presence events across the cluster.
The default value of this parameter is the value of the parameter EntitlementAllowToken. In
this way, if the value of the parameter Entitlement is Basic
or None
, then there is no need to
configure this parameter. Simply use its default value.
Otherwise, if the value of the parameter Entitlement is Custom
or JWT
, then your custom entitlement
rules should entitle subscriptions and publications on the subject defined by the parameter
Extension.Presence.Subject for the connections using the entitlement token defined by this parameter.
Extension.Audit.Access
Description | Specify whether to enable the audit access logs or not |
Default value | false |
Required parameter | Optional |
Set this parameter on true
to enable the audit access logs from your custom audit extension. If your custom audit
extension built with the Server Extensions API for Audit and deployed under the folder extensions
of your
MigratoryData installation is not already enabled, then configuring this parameter on true
will also enable your
custom audit extension.
Alternatively, set this parameter on log4j
to load the ready-made Log4j audit extension pre-installed under the folder
addons
of your MigratoryData installation.
Extension.Audit.Cache
Description | Specify whether to enable the audit cache logs or not |
Default value | false |
Required parameter | Optional |
Set this parameter on true
to enable the audit cache logs from your custom audit extension. If your custom audit
extension built with the Server Extensions API for Audit and deployed under the folder extensions
of your
MigratoryData installation is not already enabled, then configuring this parameter on true
will also enable your
custom audit extension.
Alternatively, set this parameter on log4j
to load the ready-made Log4j audit extension pre-installed under the folder
addons
of your MigratoryData installation.
Extension.Audit.Message
Description | Specify whether to enable the audit message logs or not |
Default value | false |
Required parameter | Optional |
Set this parameter on true
to enable the audit message logs from your custom audit extension. If your custom audit
extension built with the Server Extensions API for Audit and deployed under the folder extensions
of your
MigratoryData installation is not already enabled, then configuring this parameter on true
will also enable your
custom audit extension.
Alternatively, set this parameter on log4j
to load the ready-made Log4j audit extension pre-installed under the folder
addons
of your MigratoryData installation.
Extension.Audit.Stats
Description | Specify whether to enable the audit stats logs or not |
Default value | false |
Required parameter | Optional |
Set this parameter on true
to enable the audit stats logs from your custom audit extension. If your custom audit
extension built with the Server Extensions API for Audit and deployed under the folder extensions
of your
MigratoryData installation is not already enabled, then configuring this parameter on true
will also enable your
custom audit extension.
Alternatively, set this parameter on log4j
to load the ready-made Log4j audit extension pre-installed under the folder
addons
of your MigratoryData installation.