Stardust leverages J2EE's asynchronous messaging capabilities both for integration of external applications and internal use, thus requiring three JMS queues in a default installation. The following table summarizes important aspects of these queues.
| Default JNDI Name | MDB | Traffic | Lost Message Restore |
|---|---|---|---|
CarnotSystemQueue |
MessageListener |
High | Automatically during Stardust recovery . |
CarnotDaemonQueue |
DaemonListener |
Low | Automatically during Stardust recovery. |
CarnotApplicationQueue |
ResponseHandler |
Application dependent | Hard, has to be provided by external applications. |
To ease handling of errors occurring while processing messages from these queues the Stardust Process Engine provides several server-side runtime properties, which are described in the next section.
The rationale behind this implementation lies in the asynchronous behavior of JMS messaging. Two frequent reasons for easily recoverable processing failures are subtle race conditions between concurrent threads of execution (esp. independent transactional resources) and locking conflicts on shared resources. By internalizing retry strategies into its standard asynchronous message processing the Stardust Process Engine frees users to focus on handling durable or application specific error conditions.
Note
In order to enable message rollback behavior the appropriate
MDB has to be deployed with a CMT attribute of required. This is the
default for Stardust supplied EJB deployment descriptors.
The runtime properties provide controlling behavior independent of the
capabilities of the JMS implementation you use.
The following properties are available, whereby ??? stands for one of the MDB
names from the previous table:
This property specifies the number of retries in case the message could not be
processed without errors. This means the number of delayed retries to be
attempted before giving up handling an incoming JMS message causing errors and
continuing as specified with the property
JMS.<listener_name>.ProcessingFailure.Mode.
Possible values for <listener_name> are:
Hereby, DaemonListener and MessageListener have a value of
forget recommended.
This property determines the strategy used to treat incoming JMS messages causing processing errors.
Possible values are:
Possible values for <listener_name> are:
Specifies the number of milliseconds delay before retrying to handle an
incoming JMS message causing errors as specified with the property
JMS.<listener_name>.ProcessingFailure.Retries.
Possible values for <listener_name> are:
By not providing custom property values your application will stick to the following default values:
| MDB | Retries | Pause | Mode |
|---|---|---|---|
MessageListener |
20 | 500 | forget |
DaemonListener |
10 | 1000 | forget |
ResponseHandler |
2 | 500 | rollback |