Conditional messaging: Extending reliable messaging with application conditions
Abstract
Standard messaging middleware guarantees the delivery of messages to intermediary destinations like message queues, but does not guarantee the receipt or the processing of a message by final recipients. Conditional messaging is an extension to standard messaging middleware that addresses this shortcoming by allowing an application to define, monitor, and evaluate various conditions on messages, such as time constraints on the receipt or the processing of a message by a set of final recipients. In this paper, we introduce the notion of conditional messaging, and present the design and implementation of a flexible and reliable system that supports conditional messaging for use in Java 2 Enterprise Edition and message queuing environments. Our solution uniquely shifts the responsibilities for implementing the management of conditions on messages from the application to the middleware. We further discuss the grouping of multiple conditional messages into atomic units-of-work, which can also integrate requests to transactional resources like distributed objects using object middleware. Conditional messaging serves to implement various kinds of backward dependencies for distributed object transactions that integrate messaging.