Class 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

    • Constructor Detail

      • Messaging

        public Messaging​(Morphium m,
                         int pause,
                         boolean processMultiple)
        attaches to the default queue named "msg"
        Parameters:
        m - - morphium
        pause - - pause between checks
        processMultiple - - 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)
      • 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)
      • getGlobalListeners

        public List<String> getGlobalListeners()
      • getThreadPoolStats

        public Map<String,​Long> getThreadPoolStats()
      • getPendingMessagesCount

        public long getPendingMessagesCount()
      • removeMessage

        public void removeMessage​(Msg m)
      • run

        public void run()
        Specified by:
        run in interface Runnable
        Overrides:
        run in class Thread
      • 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()
      • 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)
      • start

        public void start()
        Overrides:
        start in class Thread
      • 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)
      • 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 MsgList<T> sendAndAwaitAnswers​(T theMessage,
                                                           int numberOfAnswers,
                                                           long timeout)
      • sendAndAwaitAnswers

        public <T extends MsgList<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:
      • 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)