Package org.codehaus.activemq.message

Examples of org.codehaus.activemq.message.ActiveMQMessage


                int count = lastIndex - startIndex;
                assertTrue("Not enough messages available to dispatch. Expected: " + count
                        + " messages but was: " + messagesToDispatch.length, messagesToDispatch.length >= count);

                for (int i = 0; i < count; i++) {
                    ActiveMQMessage expected = getMessage(i + startIndex);
                    ActiveMQMessage actual = messagesToDispatch[i];
                    assertMessagesEqual("Dispatched message at index: " + i, expected, actual);
                }
            }
        });
    }
View Full Code Here


     * @param msg consumed message from remote broker
     */
    public void onMessage(Message msg) {
        try {
            if (!stopped) {
                ActiveMQMessage message = (ActiveMQMessage) msg;
                if (message != null) {
                    message = message.shallowCopy();
                    message.addBrokerVisited(localBrokerName);
                    Destination destination = message.getJMSDestination();
                    int deliveryMode = message.getJMSDeliveryMode();
                    int priority = message.getJMSPriority();
                    long timeToLive = message.getJMSExpiration() - msg.getJMSTimestamp();
                    localProducer.send(destination,message,deliveryMode,priority,timeToLive);
                    //acknowledge the original
                    msg.acknowledge();
                }
            }
View Full Code Here

        addSubscription("FOO.BAR", null, queueA, isTopic());
        addSubscription("FOO.*", null, queueB, isTopic());
        addSubscription("BAR.*", "priority = 123", queueC, isTopic());
        addSubscription("BAR.*", "x = 'ABC'", queueD, isTopic());

        ActiveMQMessage message = dispatchMessage(broker, "FOO.BAR");
        queueA.waitForMessageToArrive();
        if (isTopic()) {
            assertEquals("queueA", true, queueA.flushMessages().contains(message));
            assertEquals("queueB", true, queueB.flushMessages().contains(message));
        }
        else {
            boolean atA = queueA.flushMessages().contains(message);
            boolean atB = queueB.flushMessages().contains(message);
            assertTrue("Sent to queueA or queueB. a: " + atA + " b: " + atB, (atA && !atB) || (!atA && atB));
        }
        assertEquals("queueC", false, queueC.flushMessages().contains(message));

        message = dispatchMessage(broker, "FOO.XYZ");
        queueB.waitForMessageToArrive();
        assertEquals("queueA", false, queueA.flushMessages().contains(message));
        assertEquals("queueC", false, queueC.flushMessages().contains(message));
        assertEquals("queueD", false, queueD.flushMessages().contains(message));
        assertEquals("queueB", true, queueB.flushMessages().contains(message));

        message = createMessage("BAR.XYZ");
        message.setIntProperty("priority", 123);
        broker.sendMessage(client, message);
        queueC.waitForMessageToArrive();

        assertEquals("queueA", false, queueA.flushMessages().contains(message));
        assertEquals("queueB", false, queueB.flushMessages().contains(message));
        assertEquals("queueC", true, queueC.flushMessages().contains(message));
        assertEquals("queueD", false, queueD.flushMessages().contains(message));

        message = createMessage("BAR.XYZ");
        message.setStringProperty("x", "ABC");
        broker.sendMessage(client, message);
        queueD.waitForMessageToArrive();

        assertEquals("queueA", false, queueA.flushMessages().contains(message));
        assertEquals("queueB", false, queueB.flushMessages().contains(message));
View Full Code Here

        ConsumerInfo info = createConsumer(subject, selector);
        broker.addMessageConsumer(client, info);
    }

    protected ActiveMQMessage dispatchMessage(Broker broker, String subject) throws JMSException, InterruptedException {
        ActiveMQMessage message = createMessage(subject);
        broker.sendMessage(client, message);
        return message;
    }
View Full Code Here

    }

    protected ActiveMQMessage[] getMessagesToDispatch() throws JMSException {
        List list = new ArrayList();
        while (true) {
            ActiveMQMessage message = getQueueMessageContainer().poll();
            if (message == null) {
                break;
            }
            list.add(message);
        }
View Full Code Here

        if (ts != null) {
            subscriptions.remove(ts);
            //get unacknowledged messages and re-enqueue them
            List list = ts.getUndeliveredMessages();
            for (ListIterator i = list.listIterator(list.size()); i.hasPrevious();) {
                ActiveMQMessage message = (ActiveMQMessage) i.previous();
                message.setJMSRedelivered(true);
                queue.enqueueFirstNoBlock(message);
            }
            list.clear();
            ts.close();
        }
View Full Code Here

     * do some dispatching
     */
    public void run() {
        boolean dispatched = false;
        boolean targeted = false;
        ActiveMQMessage message = null;
        try {
            while (started.get()) {
                dispatched = false;
                targeted = false;
                if (!subscriptions.isEmpty()) {
                    message = (ActiveMQMessage) queue.dequeue(2000);
                    if (message != null) {
                        if (!message.isExpired()) {
                            QueueListEntry entry = subscriptions.getFirstEntry();
                            while (entry != null) {
                                TransientQueueSubscription ts = (TransientQueueSubscription) entry.getElement();
                                if (ts.isTarget(message)) {
                                    targeted = true;
View Full Code Here

    protected void removeExpiredMessages() {
        long currentTime = System.currentTimeMillis();
        List list = queue.getContents();
        for (int i = 0; i < list.size(); i++) {
            ActiveMQMessage msg = (ActiveMQMessage) list.get(i);
            if (msg.isExpired(currentTime)) {
                queue.remove(msg);
                if (log.isDebugEnabled()) {
                    log.debug("expired message: " + msg);
                }
            }
View Full Code Here

    /**
     * implementation of Runnable
     */
    public void run() {
        while (!closed && doDispatch) {
            ActiveMQMessage message = null;
            try {
                message = (ActiveMQMessage) messageQueue.dequeue(100);
            }
            catch (InterruptedException ie) {
            }
            if (!closed) {
                if (message != null) {
                    if (doDispatch) {
                        for (Iterator i = this.session.consumers.iterator(); i.hasNext();) {
                            ActiveMQMessageConsumer consumer = (ActiveMQMessageConsumer) i.next();
                            if (message.isConsumerTarget(consumer.getConsumerNumber())) {
                                try {
                                    consumer.processMessage(message.shallowCopy());
                                }
                                catch (JMSException e) {
                                    this.session.connection.handleAsyncException(e);
                                }
                            }
View Full Code Here

     * @throws JMSException
     */
    public void acknowledgeMessage(BrokerClient client, MessageAck ack) throws JMSException {
        TransientQueueSubscription ts = (TransientQueueSubscription) subscriptions.get(ack.getConsumerId());
        if (ts != null) {
            ActiveMQMessage message = ts.acknowledgeMessage(ack.getMessageID());
            if (message != null && !ack.isMessageRead()){
                message.setJMSRedelivered(true);
                Set set = destinationMap.get(message.getJMSActiveMQDestination());
                for (Iterator i = set.iterator();i.hasNext();) {
                    TransientQueueBoundedMessageContainer container = (TransientQueueBoundedMessageContainer) i.next();
                    container.enqueueFirst(message);
                    break;
                }
View Full Code Here

TOP

Related Classes of org.codehaus.activemq.message.ActiveMQMessage

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.