org.axonframework.eventhandling.replay
Interface IncomingMessageHandler

All Known Implementing Classes:
BackloggingIncomingMessageHandler, DiscardingIncomingMessageHandler

public interface IncomingMessageHandler

Interface of a mechanism that receives Messages dispatched to a Cluster that is in Replay mode. The implementation defines if, how and when the cluster should handle events while a replay is in progress.

When replying is finished, the handler is asked to flush any backlog it may have gathered during the replay.

Implementations must ensure thread safety. The prepareForReplay(org.axonframework.eventhandling.Cluster), releaseMessage(org.axonframework.domain.DomainEventMessage) and processBacklog(org.axonframework.eventhandling.Cluster) methods are invoked by the thread performing the replay. The onIncomingMessages(org.axonframework.eventhandling.Cluster, org.axonframework.domain.EventMessage[]) method is invoked in the thread that attempts to publish events to a cluster while it is in replay mode.

Since:
2.0
Author:
Allard Buijze

Method Summary
 void onIncomingMessages(Cluster destination, EventMessage... messages)
          Invoked while the ReplayingCluster is in replay mode and an Event is being dispatched to the Cluster.
 void onReplayFailed(Cluster destination, RuntimeException cause)
          Invoked when a replay has failed.
 void prepareForReplay(Cluster destination)
          Invoked just before replay mode is activated.
 void processBacklog(Cluster destination)
          Invoked when all events from the Event Store have been processed.
 void releaseMessage(DomainEventMessage message)
          Invoked when a message has been replayed from the event store.
 

Method Detail

prepareForReplay

void prepareForReplay(Cluster destination)
Invoked just before replay mode is activated. Any messages passed to onIncomingMessages(org.axonframework.eventhandling.Cluster, org.axonframework.domain.EventMessage[]) prior to this method invocation should be dispatched immediately to the destination cluster to prevent message loss.

This method is invoked in the thread that executes the replay process.

Parameters:
destination - The cluster on which events are about te be replayed

onIncomingMessages

void onIncomingMessages(Cluster destination,
                        EventMessage... messages)
Invoked while the ReplayingCluster is in replay mode and an Event is being dispatched to the Cluster. If the timestamp of the given message is before the timestamp of any message reported via releaseMessage(org.axonframework.domain.DomainEventMessage), consider discarding the incoming message.

This method is invoked in the thread that attempts to publish the given messages to the given destination.

Parameters:
destination - The cluster to receive the message
messages - The messages to dispatch to the cluster

releaseMessage

void releaseMessage(DomainEventMessage message)
Invoked when a message has been replayed from the event store. If such a message has been received with onIncomingMessages(org.axonframework.eventhandling.Cluster, org.axonframework.domain.EventMessage[]), it should be discarded.

After this invocation, any invocation of onIncomingMessages(org.axonframework.eventhandling.Cluster, org.axonframework.domain.EventMessage[]) with a message who's timestamp is lower that this message's timestamp can be safely discarded.

This method is invoked in the thread that executes the replay process

Parameters:
message - The message replayed from the event store

processBacklog

void processBacklog(Cluster destination)
Invoked when all events from the Event Store have been processed. Any remaining backlog, as well as any messages received through onIncomingMessages(org.axonframework.eventhandling.Cluster, org.axonframework.domain.EventMessage[]) should be dispatched to the given delegate. Transactions started by the replay process have been committed or rolled back prior to the invocation of this method.

Note that onIncomingMessages(org.axonframework.eventhandling.Cluster, org.axonframework.domain.EventMessage[]) may be invoked during or after the invocation of this method. These messages must be dispatched by this handler to prevent message loss.

This method is invoked in the thread that executes the replay process

Parameters:
destination - The destination cluster to dispatch backlogged messages to

onReplayFailed

void onReplayFailed(Cluster destination,
                    RuntimeException cause)
Invoked when a replay has failed. Typically, this means the state of the cluster's backing data source cannot be guaranteed, and the replay should be retried.

Parameters:
destination - The destination cluster to dispatch backlogged messages to, if appropriate in this scenario
cause - The cause of the failure


Copyright © 2010-2012. All Rights Reserved.