Infinity Process Platform 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|
||High||Automatically during Infinity Process Platform recovery .|
||Low||Automatically during Infinity Process Platform recovery.|
||Application dependent||Hard, has to be provided by external applications.|
To ease handling of errors occurring while processing messages from these queues the Infinity 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 Infinity Process Engine frees users to focus on handling durable or application specific error conditions.
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 Infinity Process Platform 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: