queue.addConsumer(cons1); queue.addConsumer(cons2);
queue.addConsumer(consumer);
@Test public void testWithPriorities() throws Exception { QueueImpl queue = getTemporaryQueue(); final int numMessages = 10; List<MessageReference> refs = new ArrayList<>(); for (int i = 0; i < numMessages; i++) { MessageReference ref = generateReference(queue, i); ref.getMessage().setPriority((byte) i); refs.add(ref); queue.addTail(ref); } queue.deliverNow(); FakeConsumer consumer = new FakeConsumer(); queue.addConsumer(consumer); queue.deliverNow(); List<MessageReference> receivedRefs = consumer.getReferences(); // Should be in reverse order Assert.assertEquals(refs.size(), receivedRefs.size()); for (int i = 0; i < numMessages; i++) { Assert.assertEquals(refs.get(i), receivedRefs.get(9 - i)); } }
@Test public void testMessageOrder() throws Exception { FakeConsumer consumer = new FakeConsumer(); QueueImpl queue = getTemporaryQueue(); MessageReference messageReference = generateReference(queue, 1); MessageReference messageReference2 = generateReference(queue, 2); MessageReference messageReference3 = generateReference(queue, 3); queue.addHead(messageReference, false); queue.addTail(messageReference2); queue.addHead(messageReference3, false); Assert.assertEquals(0, consumer.getReferences().size()); queue.addConsumer(consumer); queue.deliverNow(); Assert.assertEquals(3, consumer.getReferences().size()); Assert.assertEquals(messageReference3, consumer.getReferences().get(0)); Assert.assertEquals(messageReference, consumer.getReferences().get(1)); Assert.assertEquals(messageReference2, consumer.getReferences().get(2)); }
scheduledExecutor, null, null, null, ArtemisExecutor.delegate(executor), null, null); queue.addConsumer(groupConsumer); queue.addConsumer(noConsumer); final MessageReference firstMessageReference = generateReference(queue, 1); final SimpleString groupName = SimpleString.toSimpleString("group");
@Test public void testAddRemoveConsumer() throws Exception { Consumer cons1 = new FakeConsumer(); Consumer cons2 = new FakeConsumer(); Consumer cons3 = new FakeConsumer(); QueueImpl queue = getTemporaryQueue(); Assert.assertEquals(0, queue.getConsumerCount()); queue.addConsumer(cons1); Assert.assertEquals(1, queue.getConsumerCount()); queue.removeConsumer(cons1); Assert.assertEquals(0, queue.getConsumerCount()); queue.addConsumer(cons1); queue.addConsumer(cons2); queue.addConsumer(cons3); Assert.assertEquals(3, queue.getConsumerCount()); queue.removeConsumer(new FakeConsumer()); Assert.assertEquals(3, queue.getConsumerCount()); queue.removeConsumer(cons1); Assert.assertEquals(2, queue.getConsumerCount()); queue.removeConsumer(cons2); Assert.assertEquals(1, queue.getConsumerCount()); queue.removeConsumer(cons3); Assert.assertEquals(0, queue.getConsumerCount()); queue.removeConsumer(cons3); }
queue.addConsumer(cons1); queue.addConsumer(cons2); queue.addConsumer(cons3);
queue.addConsumer(consumer);
@Test public void testSimpleNonDirectDelivery() throws Exception { QueueImpl queue = getTemporaryQueue(); final int numMessages = 10; List<MessageReference> refs = new ArrayList<>(); for (int i = 0; i < numMessages; i++) { MessageReference ref = generateReference(queue, i); refs.add(ref); queue.addTail(ref); } Assert.assertEquals(10, getMessageCount(queue)); Assert.assertEquals(0, queue.getScheduledCount()); Assert.assertEquals(0, queue.getDeliveringCount()); // Now add a consumer FakeConsumer consumer = new FakeConsumer(); queue.addConsumer(consumer); Assert.assertTrue(consumer.getReferences().isEmpty()); Assert.assertEquals(10, getMessageCount(queue)); Assert.assertEquals(0, queue.getScheduledCount()); queue.deliverNow(); assertRefListsIdenticalRefs(refs, consumer.getReferences()); Assert.assertEquals(numMessages, getMessageCount(queue)); Assert.assertEquals(0, queue.getScheduledCount()); Assert.assertEquals(numMessages, queue.getDeliveringCount()); }
@Test public void testBusyConsumerWithFilterFirstCallBusy() throws Exception { QueueImpl queue = getTemporaryQueue(); FakeConsumer consumer = new FakeConsumer(FilterImpl.createFilter("color = 'green'")); consumer.setStatusImmediate(HandleStatus.BUSY); queue.addConsumer(consumer); final int numMessages = 10; List<MessageReference> refs = new ArrayList<>(); for (int i = 0; i < numMessages; i++) { MessageReference ref = generateReference(queue, i); ref.getMessage().putStringProperty("color", "green"); refs.add(ref); queue.addTail(ref); } Assert.assertEquals(10, getMessageCount(queue)); Assert.assertEquals(0, queue.getScheduledCount()); Assert.assertEquals(0, queue.getDeliveringCount()); queue.deliverNow(); consumer.setStatusImmediate(null); queue.deliverNow(); List<MessageReference> receeivedRefs = consumer.getReferences(); int currId = 0; for (MessageReference receeivedRef : receeivedRefs) { Assert.assertEquals("messages received out of order", receeivedRef.getMessage().getMessageID(), currId++); } }
queue.addConsumer(consumer); queue.addConsumer(consumer);
@Test public void testBusyConsumer() throws Exception { QueueImpl queue = getTemporaryQueue(); FakeConsumer consumer = new FakeConsumer(); consumer.setStatusImmediate(HandleStatus.BUSY); queue.addConsumer(consumer); final int numMessages = 10; List<MessageReference> refs = new ArrayList<>(); for (int i = 0; i < numMessages; i++) { MessageReference ref = generateReference(queue, i); refs.add(ref); queue.addTail(ref); } Assert.assertEquals(10, getMessageCount(queue)); Assert.assertEquals(0, queue.getScheduledCount()); Assert.assertEquals(0, queue.getDeliveringCount()); queue.deliverNow(); Assert.assertEquals(10, getMessageCount(queue)); Assert.assertEquals(0, queue.getScheduledCount()); Assert.assertEquals(0, queue.getDeliveringCount()); Assert.assertTrue(consumer.getReferences().isEmpty()); consumer.setStatusImmediate(HandleStatus.HANDLED); queue.deliverNow(); assertRefListsIdenticalRefs(refs, consumer.getReferences()); Assert.assertEquals(10, getMessageCount(queue)); Assert.assertEquals(0, queue.getScheduledCount()); Assert.assertEquals(10, queue.getDeliveringCount()); }
queue.addConsumer(consumer);
queue.addConsumer(consumer); queue.addConsumer(consumer); queue.addConsumer(consumer);
queue.addConsumer(consumer);
queue.addConsumer(consumer);
queue.addConsumer(consumer);