ActiveMQSessionExecutor(ActiveMQSession session) { this.session = session; if (this.session.connection != null && this.session.connection.isMessagePrioritySupported()) { this.messageQueue = new SimplePriorityMessageDispatchChannel(); }else { this.messageQueue = new FifoMessageDispatchChannel(); } }
@Override public void enqueue(MessageDispatch message) { synchronized (mutex) { getList(message).addLast(message); this.size++; mutex.notify(); } }
@Override public MessageDispatch dequeueNoWait() { synchronized (mutex) { if (closed || !running || isEmpty()) { return null; } return removeFirst(); } }
protected LinkedList<MessageDispatch> getList(MessageDispatch md) { return lists[getPriority(md)]; }
@Override public List<MessageDispatch> removeAll() { synchronized (mutex) { ArrayList<MessageDispatch> result = new ArrayList<MessageDispatch>(size()); for (int i = MAX_PRIORITY - 1; i >= 0; i--) { List<MessageDispatch> list = lists[i]; result.addAll(list); size -= list.size(); list.clear(); } return result; } }
@Override public MessageDispatch dequeue(long timeout) throws InterruptedException { synchronized (mutex) { // Wait until the consumer is ready to deliver messages. while (timeout != 0 && !closed && (isEmpty() || !running)) { if (timeout == -1) { mutex.wait(); } else { mutex.wait(timeout); break; } } if (closed || !running || isEmpty()) { return null; } return removeFirst(); } }
protected LinkedList<MessageDispatch> getList(MessageDispatch md) { return lists[getPriority(md)]; }
@Override public List<MessageDispatch> removeAll() { synchronized (mutex) { ArrayList<MessageDispatch> result = new ArrayList<MessageDispatch>(size()); for (int i = MAX_PRIORITY - 1; i >= 0; i--) { List<MessageDispatch> list = lists[i]; result.addAll(list); size -= list.size(); list.clear(); } return result; } }
@Override public MessageDispatch dequeueNoWait() { synchronized (mutex) { if (closed || !running || isEmpty()) { return null; } return removeFirst(); } }
this.unconsumedMessages = new SimplePriorityMessageDispatchChannel(); }else { this.unconsumedMessages = new FifoMessageDispatchChannel();
@Override public void enqueueFirst(MessageDispatch message) { synchronized (mutex) { getList(message).addFirst(message); this.size++; mutex.notify(); } }
protected LinkedList<MessageDispatch> getList(MessageDispatch md) { return lists[getPriority(md)]; }
@Override public List<MessageDispatch> removeAll() { synchronized (mutex) { ArrayList<MessageDispatch> result = new ArrayList<MessageDispatch>(size()); for (int i = MAX_PRIORITY - 1; i >= 0; i--) { List<MessageDispatch> list = lists[i]; result.addAll(list); size -= list.size(); list.clear(); } return result; } }
@Override public MessageDispatch dequeueNoWait() { synchronized (mutex) { if (closed || !running || isEmpty()) { return null; } return removeFirst(); } }
ActiveMQSessionExecutor(ActiveMQSession session) { this.session = session; if (this.session.connection != null && this.session.connection.isMessagePrioritySupported()) { this.messageQueue = new SimplePriorityMessageDispatchChannel(); }else { this.messageQueue = new FifoMessageDispatchChannel(); } }
@Override public void enqueue(MessageDispatch message) { synchronized (mutex) { getList(message).addLast(message); this.size++; mutex.notify(); } }
protected LinkedList<MessageDispatch> getList(MessageDispatch md) { return lists[getPriority(md)]; }