KSB Parameters

Here is a comprehensive set of configuration parameters used to configure the Kuali Service Bus.

Core Parameters

Table 6.6. Core Parameters

Core Description Default
serviceServletUrl URL that maps to the KSB Servlet. It handles incoming requests from the service bus. 
rice.ksb.config.allowSelfSignedSSLIndicates if self-signed certificates are permitted for https communication on the service busfalse
service.namespaceDefault namespace for client application services 
keystore.file Path to the keystore file to use for security  
keystore.alias Alias of the standalone server's key  
keystore.password Password to access the keystore and the server's key  
ksb.modeMode in which to load the KSB modulelocal
ksb.urlThe URL of the KSB web application${application.url}/ksb
rice.ksb.struts.config.filesThe file that defines the struts context for the KRice KSB struts module/ksb/WEB-INF/struts-config.xml
rice.ksb.loadModuleConfigurationIndicates if the KRAD module for the KSB configuration should be loadedtrue
dev.modeIf true, application will not publish or consume services from the central service registry, but will maintain a local copy of the registry. This is intended only for client application development purposes.false
bam.enabled

If true, will monitor and log the service calls made and general business activity performed to the database.

Recommendation: Enable this only for testing purposes, as there is a significant performance impact when enabled.

false
message.persistenceIf true, messages are stored in the database until sent. If false, they are stored in memory.true
message.deliverySpecifies whether messages are sent synchronously are asynchronously. Valid values are synchronous or asyncasync
message.offIf set to true, then messages will not be sent but will instead pile up in the message queue. Intended for development and debugging purposes only.false
Routing.ImmediateExceptionRoutingIf true, messages will go immediately to exception routing if they fail, rather than being retriedfalse
RouteQueue.maxRetryAttemptsDefault number of times to retry messages that fail to be delivered successfully.5
RouteQueue.maxRetryAttemptsOverrideIf set, will override the max retry setting for ALL services, even if they have their own custom retry setting. 
ksb.org.quartz.*Can define any property beginning with ksb.org.quartz and it will be passed to the internal KSB quartz configuration as a property beginning with org.quartz (more details below) 
useQuartzDatabaseIf true, then Quartz scheduler in Rice will use a database-backed job store; if false, then jobs will be stored in memorytrue


serviceServletUrl

The URL that resolves to the KSB servlet that handles incoming requests from the service bus. All services exported onto the service bus use this value to construct their endpoint URLs when they are published to the service registry. See section below on configuring the KSBDispatcherServlet. This parameter should point to the absolute URL of where that servlet is mapped. It should include a trailing slash.

service.namespace

An identifier that indicates the name of the logical node on the service bus. If the application is running in a cluster, this should be the same for each machine in the cluster. This is used for namespacing of services, among other things. This can alternatively be set using the serviceNamespace property on RiceConfigurer directly. All services exported from the client application onto the service bus use this value as their default namespace unless otherwise specified.

keystore.file, keystore.alias, keystore.password

See the documentation below on keystore management.

ksb.mode

Mode in which to load the KSB module. Valid values are local and embedded. There is currently no difference in how the KSB module loads based on these settings. It will always try to load the KSB struts module if a KualiActionServlet is configured.

ksb.url

The URL of the KSB web application screens

rice.ksb.struts.config.files

The file that defines the struts context for the KRice KSB struts module. The struts module is loaded automatically if a KualiActionServlet is configured in the web.xml.

rice.ksb.loadModuleConfiguration

Indicates if the KRAD module for the KSB configuration should be loaded. It can be useful to set this to false if you want to load KSB without the GUIs and without pulling in the KRAD as a runtime dependency.

dev.mode

Indicates whether this node should export and consume services from the entire service bus. If set to false, then the machine will not register its services in the global service registry. Instead, it can only consume services that it has available locally. In addition to this, other nodes on the service bus will not be able to "see" this node and will therefore not forward any messages to it.

message.persistence

If true, then messages will be persisted to the datastore. Otherwise, they will only be stored in memory. If message persistence is not turned on and the server is shutdown while there are still messages that need to be sent, those messages will be lost. For a production environment, it is recommended that message persistence be set to true.

message.delivery

Can be set to either synchronous or async. If this is set to synchronous, then messages that are sent in an asynchronous fashion using the KSB API will instead be sent synchronously. This is useful in certain development and unit testing scenarios. For a production environment, it is recommended that message delivery be set to async.

message.off

If set to true then asynchronous messages will not be sent. In the case that message persistence is turned on, they will be persisted in the message store and can even be picked up later using the Message Fetcher. However, if message persistence is turned off, these messages will be lost. This can be useful in certain debugging or testing scenarios.

RouteQueue.maxRetryAttempts

Sets the default number of retries that will be executed if a message fails to be sent. This retry count can also be customized for a specific service. (See Exposing Services on the Bus)

RouteQueue.timeIncrement

Sets the default time increment between retry attempts. As with RouteQueue.maxRetryAttempts this can also be configured at the service level.

RouteQueue.maxRetryAttemptsOverride

If set with a number, it will temporarily set the retry attempts for ALL services going into exception routing. A good way to prevent all messages in a node that is having trouble from making it to exception routing is by setting the number arbitrarily high. The message.off param does the same thing.

Routing.ImmediateExceptionRouting

If set to true, then messages that fail to be sent will not be re-tried. Instead their MessageExceptionHandler will be invoked immediately.

useQuartzDatabase

When using the embedded Quartz scheduler started by the KSB, indicates whether that Quartz scheduler should store its entries in the database. If this is true, then the appropriate Quartz properties should be set as well (see ksb.org.quartz.* below).

ksb.org.quartz.*

Can be used to pass Quartz properties to the embedded Quartz scheduler. See the configuration documentation on the Quartz site. Essentially, any property prefixed with ksb.org.quartz. will have the "ksb." portion stripped and will be sent as configuration parameters to the embedded Quartz scheduler.

KSB Configurer Properties

In addition to the configuration parameters available in the KRice configuration system, the KSBConfigurer bean has some properties that can be injected to configure it:

exceptionMessagingScheduler

By default, the KSB uses an embedded Quartz scheduler for scheduling the retry of messages that fail to be sent. If desired, a Quartz scheduler can instead be injected into the KSBConfigurer and it will use that scheduler instead. See Quartz Scheduling for more detail.

messageDataSource

Specifies the javax.sql.DataSource to use for storing the asynchronous message queue. If not specified, this defaults to the DataSource injected into the RiceConfigurer.

If this DataSource is injected, then the registryDataSource must also be injected, and vice-versa.

registryDataSource

Specifies the javax.sql.DataSource to use for reading and writing from the Service Registry. If not specified, this defaults to the DataSource injected into the RiceConfigurer.

If this DataSource is injected, then the messageDataSource must also be injected, and vice-versa.

overrideServices

See Acquiring and invoking services

Services

See Acquiring and invoking services