package cz.cuni.mff.d3s.been.mq; import java.io.Serializable; import cz.cuni.mff.d3s.been.annotation.NotThreadSafe; /** * Message Queue interface for multiple senders and single receiver. * * Use {@link Messaging} to create appropriate instances. * * <p/> * * @author Martin Sixta * @param T Type of the messages to process */ @NotThreadSafe public interface IMessageQueue<T extends Serializable> { /** * Returns receiver ready to receive messages. * * Current implementations assume just one receiver (might be changed if need * for multiply receivers arises). * * @return The receiver * * @throws MessagingException Whe a receiver can't be created */ public IMessageReceiver<T> getReceiver() throws MessagingException; /** * Returns sender ready to send messages. * * @return sender ready to send messages * * @throws MessagingException When a sender cannot be created */ public IMessageSender<T> createSender() throws MessagingException; /** * Terminates the message queue. * * @throws MessagingException * On attempt to terminate a dangling queue */ public void terminate() throws MessagingException; }