@Override public int getIntProperty(final String name) throws JMSException { if (MessageUtil.JMSXDELIVERYCOUNT.equals(name)) { return message.getDeliveryCount(); } try { return message.getIntProperty(name); } catch (ActiveMQPropertyConversionException e) { throw new MessageFormatException(e.getMessage()); } }
@Override public int getIntProperty(final String name) throws JMSException { if (MessageUtil.JMSXDELIVERYCOUNT.equals(name)) { return message.getDeliveryCount(); } try { return message.getIntProperty(name); } catch (ActiveMQPropertyConversionException e) { throw new MessageFormatException(e.getMessage()); } }
@Override public int getIntProperty(final String name) throws JMSException { if (MessageUtil.JMSXDELIVERYCOUNT.equals(name)) { return message.getDeliveryCount(); } try { return message.getIntProperty(name); } catch (ActiveMQPropertyConversionException e) { throw new MessageFormatException(e.getMessage()); } }
private synchronized void doUnProposalReceived(final ClientMessage message) throws Exception { if (!message.containsProperty(ManagementHelper.HDR_PROPOSAL_GROUP_ID)) { throw new IllegalStateException("proposal type is null"); } SimpleString groupId = message.getSimpleStringProperty(ManagementHelper.HDR_PROPOSAL_GROUP_ID); SimpleString clusterName = message.getSimpleStringProperty(ManagementHelper.HDR_PROPOSAL_VALUE); Integer hops = message.getIntProperty(ManagementHelper.HDR_DISTANCE); if (server.getGroupingHandler() == null) { throw new IllegalStateException("grouping handler is null"); } server.getGroupingHandler().remove(groupId, clusterName, hops + 1); }
private synchronized void doProposalReceived(final ClientMessage message) throws Exception { if (!message.containsProperty(ManagementHelper.HDR_PROPOSAL_GROUP_ID)) { throw new IllegalStateException("proposal type is null"); } SimpleString type = message.getSimpleStringProperty(ManagementHelper.HDR_PROPOSAL_GROUP_ID); SimpleString val = message.getSimpleStringProperty(ManagementHelper.HDR_PROPOSAL_VALUE); Integer hops = message.getIntProperty(ManagementHelper.HDR_DISTANCE); if (server.getGroupingHandler() == null) { throw new IllegalStateException("grouping handler is null"); } Response response = server.getGroupingHandler().receive(new Proposal(type, val), hops + 1); if (response != null) { server.getGroupingHandler().sendProposalResponse(response, 0); } }
@Override public void onMessage(ClientMessage message) { Integer counter = message.getIntProperty("counter"); received.put(counter, message); try { log.debug("acking message = id = " + message.getMessageID() + ", counter = " + message.getIntProperty("counter")); message.acknowledge(); } catch (ActiveMQException e) { e.printStackTrace(); return; } log.debug("Acked counter = " + counter); if (counter.equals(10)) { latch.countDown(); } if (received.size() == 500) { endLatch.countDown(); } }
private synchronized void doProposalResponseReceived(final ClientMessage message) throws Exception { if (!message.containsProperty(ManagementHelper.HDR_PROPOSAL_GROUP_ID)) { throw new IllegalStateException("proposal type is null"); } SimpleString type = message.getSimpleStringProperty(ManagementHelper.HDR_PROPOSAL_GROUP_ID); SimpleString val = message.getSimpleStringProperty(ManagementHelper.HDR_PROPOSAL_VALUE); SimpleString alt = message.getSimpleStringProperty(ManagementHelper.HDR_PROPOSAL_ALT_VALUE); Integer hops = message.getIntProperty(ManagementHelper.HDR_DISTANCE); Response response = new Response(type, val, alt); if (server.getGroupingHandler() == null) { throw new IllegalStateException("grouping handler is null while sending response " + response); } server.getGroupingHandler().proposed(response); server.getGroupingHandler().sendProposalResponse(response, hops + 1); }
protected final void receiveMessages(ClientConsumer consumer, final int start, final int msgCount, final boolean ack) throws ActiveMQException { for (int i = start; i < msgCount; i++) { ClientMessage message = consumer.receive(1000); Assert.assertNotNull("Expecting a message " + i, message); // sendCallNumber is just a debugging measure. Object prop = message.getObjectProperty(SEND_CALL_NUMBER); if (prop == null) prop = Integer.valueOf(-1); final int actual = message.getIntProperty("counter").intValue(); Assert.assertEquals("expected=" + i + ". Got: property['counter']=" + actual + " sendNumber=" + prop, i, actual); assertMessageBody(i, message); if (ack) message.acknowledge(); } }
@Override public void run() { try { consumerSession.start(); for (int i = 0; i < numberOfMessages; i++) { ClientMessage msg = consumer.receive(15000); Assert.assertNotNull(msg); Assert.assertEquals(nr, msg.getIntProperty("prodNR").intValue()); msg.acknowledge(); if (i % 500 == 0) { System.out.println("Consumed " + i); consumerSession.commit(); } } Assert.assertNull(consumer.receiveImmediate()); consumerSession.commit(); } catch (Throwable e) { e.printStackTrace(); errors.incrementAndGet(); } finally { close(); } }
@Override public void run() { try { ServerLocator sl = createInVMNonHALocator(); ClientSessionFactory sf = sl.createSessionFactory(); ClientSession sess = sf.createSession(true, true, 0); sess.start(); ClientConsumer cons = sess.createConsumer(ADDRESS); for (int i = 0; i < 100; i++) { ClientMessage msg = cons.receive(5000); assertNotNull(msg); assertEquals(i, msg.getIntProperty("id").intValue()); msg.acknowledge(); } sess.close(); sl.close(); } catch (Throwable e) { e.printStackTrace(); errors.incrementAndGet(); } } };
@Test public void testConsumeFromFormat() throws Exception { ActiveMQServer server = createServer(true); DecodeJournal.importJournal(server.getConfiguration().getJournalLocation().getAbsolutePath(), "activemq-data", "amq", 2, 102400, new StringReader(journalFile)); DecodeJournal.importJournal(server.getConfiguration().getBindingsLocation().getAbsolutePath(), "activemq-bindings", "bindings", 2, 1048576, new StringReader(bindingsFile)); server.start(); ServerLocator locator = createInVMNonHALocator(); ClientSessionFactory factory = createSessionFactory(locator); ClientSession session = factory.createSession(); session.start(); ClientConsumer consumer = session.createConsumer("A1"); for (int i = 0; i < 10; i++) { ClientMessage msg = consumer.receive(5000); assertNotNull(msg); msg.acknowledge(); assertEquals(i, msg.getIntProperty("key").intValue()); } session.commit(); }
@Override public void run() { try { ServerLocator sl = createInVMNonHALocator(); ClientSessionFactory sf = sl.createSessionFactory(); ClientSession sess = sf.createSession(true, true, 0); sess.start(); ClientConsumer cons = sess.createConsumer(ADDRESS); for (int i = 0; i < numberOfMessages; i++) { ClientMessage msg = cons.receive(5000); assertNotNull(msg); assertEquals(i, msg.getIntProperty("id").intValue()); msg.acknowledge(); } assertNull(cons.receiveImmediate()); sess.close(); sl.close(); } catch (Throwable e) { e.printStackTrace(); errors.incrementAndGet(); } } };
@Test public void testSimpleRedistribution() throws Exception { commonTestCode(); for (int i = 0; i < 100; i++) { ClientMessage msg = consThree.receive(15000); Assert.assertNotNull(msg); // System.out.println(i + " msg = " + msg); int received = msg.getIntProperty("key"); if (i != received) { // Shouldn't this be a failure? System.out.println(i + "!=" + received); } msg.acknowledge(); } sessionThree.commit(); sessionOne.start(); ClientConsumer consOne = sessionOne.createConsumer(ReplicatedDistributionTest.ADDRESS); Assert.assertNull(consOne.receiveImmediate()); }
@Override public void onMessage(ClientMessage message) { assertEquals(CoreNotificationType.CONSUMER_SLOW.toString(), message.getObjectProperty(ManagementHelper.HDR_NOTIFICATION_TYPE).toString()); assertEquals(QUEUE.toString(), message.getObjectProperty(ManagementHelper.HDR_ADDRESS).toString()); assertEquals(Integer.valueOf(1), message.getIntProperty(ManagementHelper.HDR_CONSUMER_COUNT)); if (isNetty) { assertTrue(message.getSimpleStringProperty(ManagementHelper.HDR_REMOTE_ADDRESS).toString().startsWith("/127.0.0.1")); } else { assertEquals(SimpleString.toSimpleString("invm:0"), message.getSimpleStringProperty(ManagementHelper.HDR_REMOTE_ADDRESS)); } assertNotNull(message.getSimpleStringProperty(ManagementHelper.HDR_CONNECTION_NAME)); assertNotNull(message.getSimpleStringProperty(ManagementHelper.HDR_CONSUMER_NAME)); assertNotNull(message.getSimpleStringProperty(ManagementHelper.HDR_SESSION_NAME)); try { message.acknowledge(); } catch (ActiveMQException e) { e.printStackTrace(); } notifLatch.countDown(); } });
Assert.assertEquals(i, message2.getIntProperty("id").intValue());
private void receiveMessages() throws Exception { ClientSession session = sf.createSession(true, true); session.start(); try (ClientConsumer consumer = session.createConsumer(ADDRESS)) { for (int i = 0; i < numMessages; i++) { ClientMessage message = consumer.receive(100); assertNotNull("Expecting a message " + i, message); assertMessageBody(i, message); assertEquals(i, message.getIntProperty("int").intValue()); assertEquals((short) i, message.getShortProperty("short").shortValue()); assertEquals((byte) i, message.getByteProperty("byte").byteValue()); assertEquals(floatValue(i), message.getFloatProperty("float").floatValue(), 0.001); assertEquals(new SimpleString(Integer.toString(i)), message.getSimpleStringProperty(SIMPLE_STRING_KEY.toString())); assertEqualsByteArrays(byteArray(i), message.getBytesProperty("byte[]")); assertTrue(message.containsProperty("null-value")); assertEquals(message.getObjectProperty("null-value"), null); message.acknowledge(); } assertNull("no more messages", consumer.receive(50)); } session.commit(); }
@Test(timeout = 120000) public void testFailThenReceiveMoreMessagesAfterFailover() throws Exception { createSessionFactory(); ClientSession session = createSession(sf, true, true); session.createQueue(FailoverTestBase.ADDRESS, RoutingType.MULTICAST, FailoverTestBase.ADDRESS, null, true); ClientProducer producer = session.createProducer(FailoverTestBase.ADDRESS); sendMessagesSomeDurable(session, producer); ClientConsumer consumer = session.createConsumer(FailoverTestBase.ADDRESS); session.start(); // Receive MSGs but don't ack! for (int i = 0; i < NUM_MESSAGES; i++) { ClientMessage message = consumer.receive(1000); Assert.assertNotNull(message); assertMessageBody(i, message); Assert.assertEquals(i, message.getIntProperty("counter").intValue()); } crash(session); // Should get the same ones after failover since we didn't ack receiveDurableMessages(consumer); }
@Test public void testManyMessagesSameTime() throws Exception { ClientSessionFactory sessionFactory = createSessionFactory(locator); ClientSession session = sessionFactory.createSession(false, false, false); session.createQueue(atestq, atestq, null, true); ClientProducer producer = session.createProducer(atestq); long time = System.currentTimeMillis(); time += 1000; for (int i = 0; i < 10; i++) { ClientMessage message = session.createMessage(true); message.putIntProperty("value", i); message.putLongProperty(Message.HDR_SCHEDULED_DELIVERY_TIME, time); producer.send(message); } session.commit(); session.start(); ClientConsumer consumer = session.createConsumer(atestq); for (int i = 0; i < 10; i++) { ClientMessage message = consumer.receive(15000); assertNotNull(message); message.acknowledge(); assertEquals(i, message.getIntProperty("value").intValue()); } session.commit(); Assert.assertNull(consumer.receiveImmediate()); session.close(); }
@Test public void testBrowseWithZeroConsumerWindowSize() throws Exception { locator.setConsumerWindowSize(0); ClientSessionFactory sf = createSessionFactory(locator); ClientSession session = sf.createSession(false, true, true); session.createQueue(QUEUE, QUEUE, null, false); ClientProducer producer = session.createProducer(QUEUE); final int numMessages = 100; byte[] bytes = new byte[240]; for (int i = 0; i < numMessages; i++) { ClientMessage message = session.createMessage(false); message.getBodyBuffer().writeBytes(bytes); message.putIntProperty("foo", i); producer.send(message); } //Create a normal non browsing consumer session.createConsumer(QUEUE); session.start(); ClientConsumer browser = session.createConsumer(QUEUE, true); for (int i = 0; i < numMessages; i++) { ClientMessage message2 = browser.receive(1000); assertEquals(i, message2.getIntProperty("foo").intValue()); } session.close(); }
@Test(timeout = 120000) public void testTransactedMessagesNotConsumedSoNoRollback() throws Exception { createSessionFactory(); ClientSession session1 = createSessionAndQueue(); ClientProducer producer = session1.createProducer(FailoverTestBase.ADDRESS); sendMessages(session1, producer, NUM_MESSAGES); session1.commit(); ClientSession session2 = createSession(sf, false, false); ClientConsumer consumer = session2.createConsumer(FailoverTestBase.ADDRESS); session2.start(); receiveMessages(consumer, 0, NUM_MESSAGES / 2, true); session2.commit(); consumer.close(); crash(session2); Assert.assertFalse(session2.isRollbackOnly()); consumer = session2.createConsumer(FailoverTestBase.ADDRESS); for (int i = NUM_MESSAGES / 2; i < NUM_MESSAGES; i++) { ClientMessage message = consumer.receive(1000); Assert.assertNotNull("expecting message " + i, message); assertMessageBody(i, message); Assert.assertEquals(i, message.getIntProperty("counter").intValue()); message.acknowledge(); } session2.commit(); Assert.assertNull(consumer.receiveImmediate()); }