An interceptor that acts as a failover valve: it allows all invocations to go through as long
as there is no failover in progress (valve is open), and holds all invocations while client-side
failover is taking place (valve is closed).
It will always favour the first receiver in the internal list of receivers, but will retry
the next one (and the next one...) if a previous one does not want to accept the message.
Method called by failure detection components (FailoverValveInterceptors and
ConnectionListeners) when they have reasons to believe that a server failure occured.
Get message counter data as string in format
"Topic/Queue, Name, Subscription, Durable, Count, CountDelta,
Depth, DepthDelta, Timestamp Last Increment"
Get message counter history data as string in format
"day count\n
Date 1, hour counter 0, hour counter 1, ..., hour counter 23\n
Date 2, hour counter 0, hour counter 1, ..., hour counter 23\n
.....
Get array of XA transactions in prepared state-
This would be used by the transaction manager in recovery or by a tool to apply
heuristic decisions to commit or rollback particular transactions
Redelivery occurs in two situations:
1) When session.recover() is called (JMS1.1 4.4.11)
"A session's recover method is used to stop a session and restart it with its first
unacknowledged message.
This class stores message count informations for a given queue
At intervals this class samples the queue for message count data
Note that the underlying queue *does not* update statistics every time a message
is added since that would reall slow things down, instead we *sample* the queues at
regular intervals - this means we are less intrusive on the queue
A MessageQueueNameHelper
By convention, we name durable topic message queue names in the following way:
.
This is a helper class to aid in converting between the string form and the client id
and subscription name and vice versa
Merge the contents of one queue with another - this happens at failover when a queue is failed
over to another node, but a queue with the same name already exists.
We order the list of references in ascending message order thus preventing deadlock when 2 or
more channels are updating the same messages in different transactions.
This channel implementation automatically pages message references to and from storage to prevent
more than a maximum number of references being stored in memory at once.
A RemoteQueueStub
TODO to avoid having to implement a lot of methods that throw
UnsupportedOperationException should define an interface that only declares
the required methods and implement that
Context.rebind() requires that all intermediate contexts and the target context (that named by
all but terminal atomic component of the name) must already exist, otherwise
NameNotFoundException is thrown.
Reset the internal state of the browser endpoint so the following
nextMessage()/hasNextMessage()/nextMessageBlock() invocations would reflect the state of the
queue at the moment of the reset.
Used by the FailoverCommandCenter to mark this remoting connection as "condemned", following
a failure detected by either a failed invocation, or the ConnectionListener.
During HA events, delegates corresponding to new enpoints on the new server are created and
the state of those delegates has to be transfered to the "failed" delegates.