@Override protected void addPayload(ClientMessage message) { message.putBytesProperty("payload", new byte[20 * 1024]); }
private void sendMessage(MessageProducer producer, String threadName) throws Exception { Message message = createMessage(sentCount.get(), threadName); if (queueId != null) { ((ActiveMQMessage) message).getCoreMessage().putBytesProperty(org.apache.activemq.artemis.api.core.Message.HDR_ROUTE_TO_IDS, queueId); } producer.send(message); if (verbose) { System.out.println(threadName + " Sent: " + (message instanceof TextMessage ? ((TextMessage) message).getText() : message.getJMSMessageID())); } if (transactionBatchSize > 0 && sentCount.get() > 0 && sentCount.get() % transactionBatchSize == 0) { System.out.println(threadName + " Committing transaction: " + transactions++); session.commit(); } if (sleep > 0) { Thread.sleep(sleep); } }
private void sendMessage(MessageProducer producer, String threadName) throws Exception { Message message = createMessage(sentCount.get(), threadName); if (queueId != null) { ((ActiveMQMessage) message).getCoreMessage().putBytesProperty(org.apache.activemq.artemis.api.core.Message.HDR_ROUTE_TO_IDS, queueId); } producer.send(message); if (verbose) { System.out.println(threadName + " Sent: " + (message instanceof TextMessage ? ((TextMessage) message).getText() : message.getJMSMessageID())); } if (transactionBatchSize > 0 && sentCount.get() > 0 && sentCount.get() % transactionBatchSize == 0) { System.out.println(threadName + " Committing transaction: " + transactions++); session.commit(); } if (sleep > 0) { Thread.sleep(sleep); } }
private static void copyProperties(final Message msg) throws JMSException { Enumeration<String> en = msg.getPropertyNames(); Map<String, Object> oldProps = null; while (en.hasMoreElements()) { String propName = en.nextElement(); if (oldProps == null) { oldProps = new HashMap<>(); } oldProps.put(propName, msg.getObjectProperty(propName)); } msg.clearProperties(); if (oldProps != null) { for (Entry<String, Object> entry : oldProps.entrySet()) { String propName = entry.getKey(); Object val = entry.getValue(); if (val instanceof byte[] == false) { //Can't set byte[] array props through the JMS API - if we're bridging an ActiveMQ Artemis message it might have such props msg.setObjectProperty(propName, entry.getValue()); } else if (msg instanceof ActiveMQMessage) { ((ActiveMQMessage) msg).getCoreMessage().putBytesProperty(propName, (byte[]) val); } } } }
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData()); producer.send(message); message2 = consumer.receive(1000); message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData()); producer.send(message); message2 = consumer.receiveImmediate(); message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData()); producer.send(message); message2 = consumer.receiveImmediate(); message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID2.getData()); producer.send(message); message2 = consumer.receive(1000); message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID2.getData()); producer.send(message); message2 = consumer.receiveImmediate(); message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData()); producer.send(message); message2 = consumer.receiveImmediate();
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID1.getData()); producer.send(message); message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID2.getData()); producer.send(message); message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID1.getData()); producer.send(message); message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID2.getData()); producer.send(message);
@Test public void testRollbackThenSend() throws Exception { ClientSession session = sf.createSession(false, false, false); session.start(); final SimpleString queueName = new SimpleString("DuplicateDetectionTestQueue"); session.createQueue(queueName, queueName, null, false); ClientProducer producer = session.createProducer(queueName); ClientConsumer consumer = session.createConsumer(queueName); ClientMessage message = createMessage(session, 0); SimpleString dupID1 = new SimpleString("abcdefg"); message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID1.getData()); message.putStringProperty("key", dupID1.toString()); producer.send(message); session.rollback(); message = createMessage(session, 0); message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID1.getData()); message.putStringProperty("key", dupID1.toString()); producer.send(message); session.commit(); message = consumer.receive(5000); assertNotNull(message); assertTrue(message.getStringProperty("key").equals(dupID1.toString())); }
@Test public void testTransactedDuplicateDetection2() throws Exception { ClientSession session = sf.createSession(false, false, false); session.start(); final SimpleString queueName = new SimpleString("DuplicateDetectionTestQueue"); session.createQueue(queueName, queueName, null, false); ClientProducer producer = session.createProducer(queueName); ClientConsumer consumer = session.createConsumer(queueName); ClientMessage message = createMessage(session, 0); SimpleString dupID = new SimpleString("abcdefg"); message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData()); producer.send(message); session.rollback(); // Should be able to resend it and not get rejected since transaction didn't commit message = createMessage(session, 1); message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData()); producer.send(message); session.commit(); message = consumer.receive(250); Assert.assertEquals(1, message.getObjectProperty(propKey)); message = consumer.receiveImmediate(); Assert.assertNull(message); }
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData()); producer.send(message); message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData()); producer.send(message);
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData()); producer.send(message); message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData()); producer.send(message);
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData()); producer.send(message); message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData()); producer.send(message);
private void sendMessages() throws Exception { ClientSession session = sf.createSession(true, true); String filter = null; session.createAddress(SimpleString.toSimpleString(ADDRESS), RoutingType.MULTICAST, false); session.createQueue(ADDRESS, RoutingType.MULTICAST, ADDRESS, filter, true); ClientProducer producer = session.createProducer(ADDRESS); for (int i = 0; i < numMessages; i++) { ClientMessage message = session.createMessage(true); setBody(i, message); message.putIntProperty("int", i); message.putShortProperty("short", (short) i); message.putByteProperty("byte", (byte) i); message.putFloatProperty("float", floatValue(i)); message.putStringProperty(SIMPLE_STRING_KEY, new SimpleString(Integer.toString(i))); message.putBytesProperty("byte[]", byteArray(i)); message.putObjectProperty("null-value", null); producer.send(message); } session.commit(); }
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData()); producer.send(message); message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData()); producer.send(message);
@Test public void testTransactedDuplicateDetection1() throws Exception { ClientSession session = sf.createSession(false, false, false); session.start(); final SimpleString queueName = new SimpleString("DuplicateDetectionTestQueue"); session.createQueue(queueName, queueName, null, false); ClientProducer producer = session.createProducer(queueName); ClientMessage message = createMessage(session, 0); SimpleString dupID = new SimpleString("abcdefg"); message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData()); producer.send(message); session.close(); session = sf.createSession(false, false, false); session.start(); producer = session.createProducer(queueName); ClientConsumer consumer = session.createConsumer(queueName); // Should be able to resend it and not get rejected since transaction didn't commit message = createMessage(session, 1); message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData()); producer.send(message); session.commit(); message = consumer.receive(250); Assert.assertEquals(1, message.getObjectProperty(propKey)); message = consumer.receiveImmediate(); Assert.assertNull(message); }
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData()); producer.send(message);
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData()); producer.send(message); ClientMessage message2 = consumer.receive(1000); message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID2.getData()); producer.send(message); message2 = consumer.receive(1000); message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData()); producer.send(message); message2 = consumer.receive(200); message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID2.getData()); producer.send(message); message2 = consumer.receive(200);
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData()); producer.send(message);
ClientMessage message = createMessage(session, i); SimpleString dupID = new SimpleString("abcdefg" + i); message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData()); producer.send(message); ClientMessage message2 = consumer.receive(1000); ClientMessage message = createMessage(session, i); SimpleString dupID = new SimpleString("abcdefg" + i); message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData()); producer.send(message); ClientMessage message2 = consumer.receiveImmediate();
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID1.getData()); message.putStringProperty("key", dupID1.toString());
message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData()); producer.send(message); message.putBytesProperty(Message.HDR_DUPLICATE_DETECTION_ID, dupID.getData()); producer.send(message);