For event notification, the adapter detects events written to a queue by WebSphere Commerce.
The adapter uses the pollForEvents() method to poll the queue at regular intervals for messages. When the adapter finds a message, it retrieves it from the queue and examines it to determine its format. If the format has been defined in the adapter's static meta-object, the adapter passes both the message body and a new instance of the business object associated with the format to the configured data handler; the data handler is expected to populate the business object and specify a verb. If the format is not defined in the static meta-object, the adapter passes only the message body to the data handler; the data handler is expected to determine, create and populate the correct business object for the message. See "Error handling" for event failure scenarios.
The adapter processes messages by first opening a transactional session to the input queue. This transactional approach allows for a small chance that a business object could be delivered to a collaboration twice due to the adapter successfully submitting the business object but failing to commit the transaction in the queue. To avoid this problem, the adapter moves all messages to an in-progress queue. There, the message is held until processing is complete. If the adapter shuts down unexpectedly during processing, the message remains in the in-progress queue instead of being reinstated to the original input queue.
Upon initialization, the adapter checks the in-progress queue for messages that have not been completely processed, presumably due to a connector shutdown. The connector configuration property InDoubtEvents allows you to specify one of four options for handling recovery of such messages: fail on startup, reprocess, ignore, or log error.
With the fail on startup option, if the adapter finds messages in the in-progress queue during initialization, it logs an error and immediately shuts down. It is the responsibility of the user or system administrator to examine the message and take appropriate action, either to delete these messages entirely or move them to a different queue.
With the reprocessing option, if the adapter finds any messages in the in-progress queue during initialization, it processes these messages first during subsequent polls. When all messages in the in-progress queue have been processed, the adapter begins processing messages from the input queue.
With the ignore option, if the adapter finds any messages in the in-progress queue during initialization, the adapter ignores them, but does not shut down.
With the log error option, if the adapter finds any messages in the in-progress queue during initialization, it logs an error but does not shut down.
If the connector property ArchiveQueue is specified and identifies a valid queue, the adapter places copies of all successfully processed messages in the archive queue. If ArchiveQueue is undefined, messages are discarded after processing. For more information on archiving unsubscribed or erroneous messages, see Error handling.