Package de.caluga.morphium.messaging
Class Messaging
- java.lang.Object
-
- java.lang.Thread
-
- de.caluga.morphium.messaging.Messaging
-
- All Implemented Interfaces:
ShutdownListener,Runnable
public class Messaging extends Thread implements ShutdownListener
User: Stephan Bösebeck Date: 26.05.12 Time: 15:48 Messaging implements a simple, threadsafe and messaging api. Used for cache synchronization. Msg can have several modes: - LockedBy set to ALL (Exclusive Messages): every listener may process it (in parallel), means 1->n. e.g. Cache sync - LockedBy null (non exclusive messages): only one listener at a time - Message listeners may return a Message as answer. Or throw a MessageRejectedException.c
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classMessaging.MessageTimeoutExceptionstatic classMessaging.ReceiveAnswersstatic classMessaging.SystemShutdownException-
Nested classes/interfaces inherited from class java.lang.Thread
Thread.State, Thread.UncaughtExceptionHandler
-
-
Field Summary
-
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
-
-
Constructor Summary
Constructors Constructor Description Messaging(Morphium m)Messaging(Morphium m, int pause, boolean processMultiple)attaches to the default queue named "msg"Messaging(Morphium m, int pause, boolean processMultiple, boolean multithreadded, int windowSize)Messaging(Morphium m, String queueName, int pause, boolean processMultiple)Messaging(Morphium m, String queueName, int pause, boolean processMultiple, boolean multithreadded, int windowSize)Messaging(Morphium m, String queueName, int pause, boolean processMultiple, boolean multithreadded, int windowSize, boolean useChangeStream)Messaging(Morphium m, String queueName, int pause, boolean processMultiple, boolean multithreadded, int windowSize, boolean useChangeStream, Messaging.ReceiveAnswers recieveAnswers)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddListenerForMessageNamed(String n, MessageListener l)voidaddMessageListener(MessageListener l)voiddisableStatusInfoListener()voidenableStatusInfoListener()voidfindAndProcessPendingMessages(String name)StringgetCollectionName()List<String>getGlobalListeners()Map<String,List<String>>getListenerNames()longgetNumberOfMessages()intgetPause()longgetPendingMessagesCount()StringgetQueueName()Messaging.ReceiveAnswersgetReceiveAnswers()intgetRunningTasks()StringgetSenderId()StringgetStatusInfoListenerName()Map<String,Long>getThreadPoolStats()intgetWindowSize()booleanisAutoAnswer()booleanisMultithreadded()booleanisProcessMultiple()booleanisReceiveAnswers()Receive answers=false, onMessage is not called, when answers come in if true, onMessage is called for all answers this is not affecting the sendAndWaitFor-Methods!booleanisRunning()booleanisStatusInfoListenerEnabled()booleanisUseChangeStream()voidonShutdown(Morphium m)voidpauseProcessingOfMessagesNamed(String name)pause processing for certain messagesvoidqueueMessage(Msg m)voidqueueMessagetoSelf(Msg m)voidremoveListenerForMessageNamed(String n, MessageListener l)voidremoveMessage(Msg m)voidremoveMessageListener(MessageListener l)voidrun()<T extends Msg>
List<T>sendAndAwaitAnswers(T theMessage, int numberOfAnswers, long timeout)<T extends Msg>
List<T>sendAndAwaitAnswers(T theMessage, int numberOfAnswers, long timeout, boolean throwExceptionOnTimeout)<T extends Msg>
TsendAndAwaitFirstAnswer(T theMessage, long timeoutInMs)<T extends Msg>
TsendAndAwaitFirstAnswer(T theMessage, long timeoutInMs, boolean throwExceptionOnTimeout)voidsendMessage(Msg m)voidsendMessageToSelf(Msg m)MessagingsetAutoAnswer(boolean autoAnswer)MessagingsetMultithreadded(boolean multithreadded)MessagingsetPause(int pause)MessagingsetProcessMultiple(boolean processMultiple)MessagingsetQueueName(String queueName)voidsetReceiveAnswers(Messaging.ReceiveAnswers receiveAnswers)Receive answers=false, onMessage is not called, when answers come in if true, onMessage is called for all answers this is not affecting the sendAndWaitFor-Methods!MessagingsetSenderId(String id)voidsetStatusInfoListenerEnabled(boolean statusInfoListenerEnabled)voidsetStatusInfoListenerName(String statusInfoListenerName)MessagingsetUseChangeStream(boolean useChangeStream)MessagingsetWindowSize(int windowSize)voidstart()voidterminate()LongunpauseProcessingOfMessagesNamed(String name)unpause processing-
Methods inherited from class java.lang.Thread
activeCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, stop, suspend, toString, yield
-
-
-
-
Constructor Detail
-
Messaging
public Messaging(Morphium m, int pause, boolean processMultiple)
attaches to the default queue named "msg"- Parameters:
m- - morphiumpause- - pause between checksprocessMultiple- - process multiple messages at once, if false, only ony by one
-
Messaging
public Messaging(Morphium m)
-
Messaging
public Messaging(Morphium m, int pause, boolean processMultiple, boolean multithreadded, int windowSize)
-
Messaging
public Messaging(Morphium m, String queueName, int pause, boolean processMultiple, boolean multithreadded, int windowSize)
-
Messaging
public Messaging(Morphium m, String queueName, int pause, boolean processMultiple, boolean multithreadded, int windowSize, boolean useChangeStream)
-
Messaging
public Messaging(Morphium m, String queueName, int pause, boolean processMultiple, boolean multithreadded, int windowSize, boolean useChangeStream, Messaging.ReceiveAnswers recieveAnswers)
-
-
Method Detail
-
enableStatusInfoListener
public void enableStatusInfoListener()
-
disableStatusInfoListener
public void disableStatusInfoListener()
-
getStatusInfoListenerName
public String getStatusInfoListenerName()
-
setStatusInfoListenerName
public void setStatusInfoListenerName(String statusInfoListenerName)
-
isStatusInfoListenerEnabled
public boolean isStatusInfoListenerEnabled()
-
setStatusInfoListenerEnabled
public void setStatusInfoListenerEnabled(boolean statusInfoListenerEnabled)
-
getPendingMessagesCount
public long getPendingMessagesCount()
-
removeMessage
public void removeMessage(Msg m)
-
pauseProcessingOfMessagesNamed
public void pauseProcessingOfMessagesNamed(String name)
pause processing for certain messages- Parameters:
name-
-
unpauseProcessingOfMessagesNamed
public Long unpauseProcessingOfMessagesNamed(String name)
unpause processing- Parameters:
name-- Returns:
- duration or null
-
findAndProcessPendingMessages
public void findAndProcessPendingMessages(String name)
-
getCollectionName
public String getCollectionName()
-
addListenerForMessageNamed
public void addListenerForMessageNamed(String n, MessageListener l)
-
removeListenerForMessageNamed
public void removeListenerForMessageNamed(String n, MessageListener l)
-
getSenderId
public String getSenderId()
-
getPause
public int getPause()
-
setPause
public Messaging setPause(int pause)
-
isRunning
public boolean isRunning()
-
terminate
public void terminate()
-
addMessageListener
public void addMessageListener(MessageListener l)
-
removeMessageListener
public void removeMessageListener(MessageListener l)
-
queueMessage
public void queueMessage(Msg m)
-
sendMessage
public void sendMessage(Msg m)
-
getNumberOfMessages
public long getNumberOfMessages()
-
sendMessageToSelf
public void sendMessageToSelf(Msg m)
-
queueMessagetoSelf
public void queueMessagetoSelf(Msg m)
-
isAutoAnswer
public boolean isAutoAnswer()
-
setAutoAnswer
public Messaging setAutoAnswer(boolean autoAnswer)
-
onShutdown
public void onShutdown(Morphium m)
- Specified by:
onShutdownin interfaceShutdownListener
-
sendAndAwaitFirstAnswer
public <T extends Msg> T sendAndAwaitFirstAnswer(T theMessage, long timeoutInMs)
-
sendAndAwaitFirstAnswer
public <T extends Msg> T sendAndAwaitFirstAnswer(T theMessage, long timeoutInMs, boolean throwExceptionOnTimeout)
-
sendAndAwaitAnswers
public <T extends Msg> List<T> sendAndAwaitAnswers(T theMessage, int numberOfAnswers, long timeout)
-
sendAndAwaitAnswers
public <T extends Msg> List<T> sendAndAwaitAnswers(T theMessage, int numberOfAnswers, long timeout, boolean throwExceptionOnTimeout)
-
isProcessMultiple
public boolean isProcessMultiple()
-
setProcessMultiple
public Messaging setProcessMultiple(boolean processMultiple)
-
getQueueName
public String getQueueName()
-
isMultithreadded
public boolean isMultithreadded()
-
setMultithreadded
public Messaging setMultithreadded(boolean multithreadded)
-
getWindowSize
public int getWindowSize()
-
setWindowSize
public Messaging setWindowSize(int windowSize)
-
isReceiveAnswers
public boolean isReceiveAnswers()
Receive answers=false, onMessage is not called, when answers come in if true, onMessage is called for all answers this is not affecting the sendAndWaitFor-Methods!- Returns:
-
getReceiveAnswers
public Messaging.ReceiveAnswers getReceiveAnswers()
-
setReceiveAnswers
public void setReceiveAnswers(Messaging.ReceiveAnswers receiveAnswers)
Receive answers=false, onMessage is not called, when answers come in if true, onMessage is called for all answers this is not affecting the sendAndWaitFor-Methods!
-
isUseChangeStream
public boolean isUseChangeStream()
-
getRunningTasks
public int getRunningTasks()
-
setUseChangeStream
public Messaging setUseChangeStream(boolean useChangeStream)
-
-