@Override public void reset() throws JMSException { if (!readOnly) { readOnly = true; bodyLength = message.getBodySize(); } bytesMessageReset(message.getBodyBuffer()); }
private boolean handleCoreProperty(final String name, final Object value, String jmsPropertyName, SimpleString corePropertyName) { boolean result = false; if (jmsPropertyName.equals(name)) { message.putStringProperty(corePropertyName, value == null ? null : value.toString()); result = true; } return result; }
@Override public long getJMSTimestamp() throws JMSException { return message.getTimestamp(); }
public void doBeforeReceive() throws ActiveMQException { message.checkCompletion(); ActiveMQBuffer body = message.getBodyBuffer(); if (body != null) { body.resetReaderIndex(); } }
msg.getBodyBuffer().writeString("Bob the giant pig " + i); msg.putBooleanProperty("myBooleanProperty", Boolean.TRUE); msg.putByteProperty("myByteProperty", new Byte("0")); msg.putBytesProperty("myBytesProperty", new byte[]{0, 1, 2, 3, 4}); msg.putDoubleProperty("myDoubleProperty", i * 1.6); msg.putFloatProperty("myFloatProperty", i * 2.5F); msg.putIntProperty("myIntProperty", i); msg.putLongProperty("myLongProperty", Long.MAX_VALUE - i); msg.putObjectProperty("myObjectProperty", i); msg.putShortProperty("myShortProperty", new Integer(i).shortValue()); msg.putStringProperty("myStringProperty", "myStringPropertyValue_" + i); msg.putStringProperty("myNonAsciiStringProperty", international.toString()); msg.putStringProperty("mySpecialCharacters", special); producer.send(msg); byte[] body = new byte[msg.getBodySize()]; msg.getBodyBuffer().readBytes(body); Assert.assertTrue(new String(body).contains("Bob the giant pig " + i)); Assert.assertEquals(msg.getBooleanProperty("myBooleanProperty"), Boolean.TRUE); Assert.assertEquals(msg.getByteProperty("myByteProperty"), new Byte("0")); byte[] bytes = msg.getBytesProperty("myBytesProperty"); for (int j = 0; j < 5; j++) { Assert.assertEquals(j, bytes[j]); Assert.assertEquals(i * 1.6, msg.getDoubleProperty("myDoubleProperty"), 0.000001); Assert.assertEquals(i * 2.5F, msg.getFloatProperty("myFloatProperty"), 0.000001); Assert.assertEquals(i, msg.getIntProperty("myIntProperty").intValue()); Assert.assertEquals(Long.MAX_VALUE - i, msg.getLongProperty("myLongProperty").longValue()); Assert.assertEquals(i, msg.getObjectProperty("myObjectProperty"));
msg.setExpiration(Long.MAX_VALUE); msg.setPriority((byte) 0); msg.setTimestamp(Long.MAX_VALUE - 1); msg.setUserID(UUIDGenerator.getInstance().generateUUID()); producer.send(msg); assertEquals(Long.MAX_VALUE, msg.getExpiration()); assertEquals((byte) 0, msg.getPriority()); assertEquals(Long.MAX_VALUE - 1, msg.getTimestamp()); assertNotNull(msg.getUserID());
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(); }
@Override protected <T> T getBodyInternal(Class<T> c) { if (bodyLength == 0) return null; byte[] dst = new byte[bodyLength]; message.getBodyBuffer().getBytes(CoreMessage.BODY_OFFSET, dst); return (T) dst; } }
msg.setPriority((byte) 5); msg.putBooleanProperty("fast", false); producer.send(msg); msg.setPriority((byte) 6); msg.putBooleanProperty("fast", true); producer.send(msg); ClientMessage msg = consumer.receive(5000); assertNotNull(msg); msg.acknowledge(); assertTrue(msg.getBooleanProperty("fast")); ClientMessage msg = consumer.receive(5000); assertNotNull(msg); msg.acknowledge(); assertFalse(msg.getBooleanProperty("fast"));
public List<String> sendMessageBatch(int batchSize, ClientSession session, SimpleString queueAddr) throws ActiveMQException { List<String> messageIds = new ArrayList<>(); ClientProducer producer = session.createProducer(queueAddr); for (int i = 0; i < batchSize; i++) { ClientMessage message = session.createMessage(true); message.getBodyBuffer().writeBytes(new byte[1024]); String id = UUID.randomUUID().toString(); message.putStringProperty("id", id); message.putIntProperty("seq", i); // this is to make the print-data easier to debug messageIds.add(id); producer.send(message); } session.commit(); return messageIds; }
public static void writeHttpMessage(HttpHeaders headers, byte[] body, ClientMessage message) throws Exception { MultivaluedMap<String, String> hdrs = headers.getRequestHeaders(); for (Entry<String, List<String>> entry : hdrs.entrySet()) { String key = entry.getKey(); if (isTransferableHttpHeader(key)) { List<String> vals = entry.getValue(); String value = concatenateHeaderValue(vals); message.putStringProperty(HttpHeaderProperty.toPropertyName(key), value); } } message.putBooleanProperty(POSTED_AS_HTTP_MESSAGE, true); message.getBodyBuffer().writeBytes(body); }
public ArtemisBenchmarkConsumer(String topic, String queueName, ClientSessionFactory sessionFactory, ConsumerCallback callback) throws ActiveMQException { session = sessionFactory.createSession(); session.createQueue(SimpleString.toSimpleString(topic), RoutingType.MULTICAST, SimpleString.toSimpleString(queueName), true /* durable */); consumer = session.createConsumer(queueName); consumer.setMessageHandler(message -> { byte[] payload = new byte[message.getBodyBuffer().readableBytes()]; message.getBodyBuffer().readBytes(payload); callback.messageReceived(payload, message.getTimestamp()); try { message.acknowledge(); } catch (ActiveMQException e) { log.warn("Failed to acknowledge message", e); } }); session.start(); }
@Test public void testCreateMessageOverrides() throws Exception { cf = createSessionFactory(locator); ClientSession clientSession = cf.createSession(false, true, true); ClientMessage clientMessage = clientSession.createMessage((byte) 88, false, 100L, 300L, (byte) 33); Assert.assertEquals((byte) 88, clientMessage.getType()); Assert.assertEquals(100L, clientMessage.getExpiration()); Assert.assertEquals(300L, clientMessage.getTimestamp()); Assert.assertEquals((byte) 33, clientMessage.getPriority()); clientSession.close(); }
@Override public void setIntProperty(final String name, final int value) throws JMSException { checkProperty(name); message.putIntProperty(name, value); }
try { while ((message = getMessage()) != null) { Integer counter = message.getIntProperty("counter"); received.put(counter, message); try { log.info("acking message = id = " + message.getMessageID() + ", counter = " + message.getIntProperty("counter")); message.acknowledge(); } catch (ActiveMQException e) { e.printStackTrace(); if (message.getBooleanProperty("end")) { break;
@Override public void onMessage(final ClientMessage message) { list.add(message); if (acknowledge) { try { message.acknowledge(); } catch (ActiveMQException e) { // ignore } } latch.countDown(); }
activeMQJmsMessage.getCoreMessage().setUserID(uid); coreMessage.putStringProperty(ActiveMQConnection.CONNECTION_ID_PROPERTY_NAME, connID); coreMessage.setRoutingType(destination.isQueue() ? RoutingType.ANYCAST : RoutingType.MULTICAST);
@Override public void acknowledge(final ClientMessage message) throws ActiveMQException { ClientMessageInternal cmi = (ClientMessageInternal) message; if (ackIndividually) { individualAcknowledge(message); } else { ackBytes += message.getEncodeSize(); if (logger.isTraceEnabled()) { logger.trace(this + "::acknowledge ackBytes=" + ackBytes + " and ackBatchSize=" + ackBatchSize + ", encodeSize=" + message.getEncodeSize()); } if (ackBytes >= ackBatchSize) { if (logger.isTraceEnabled()) { logger.trace(this + ":: acknowledge acking " + cmi); } doAck(cmi); } else { if (logger.isTraceEnabled()) { logger.trace(this + ":: acknowledge setting lastAckedMessage = " + cmi); } lastAckedMessage = cmi; } } }
public static ConsumedMessage createConsumedMessage(ClientMessage message, ConnectionFactoryOptions options) { Boolean aBoolean = message.getBooleanProperty(POSTED_AS_HTTP_MESSAGE); if (aBoolean != null && aBoolean.booleanValue()) { return new ConsumedHttpMessage(message); } else if (message.getType() == Message.OBJECT_TYPE) { return new ConsumedObjectMessage(message, options); } else { throw new IllegalArgumentException("ClientMessage must be an HTTP message or an Object message: " + message + " type: " + message.getType()); } } }
private void assertMessageInQueueThenReceiveAndCheckContent(ActiveMQServer server, ClientSessionFactory sf) throws Exception { Wait.assertEquals(1, () -> getMessageCount(((Queue) server.getPostOffice().getBinding(ADDRESS).getBindable())), 5 * 1000, 100); ClientSession session = sf.createSession(false, false, false); session.start(); ClientConsumer consumer = session.createConsumer(ADDRESS); ClientMessage msg = consumer.receive(1000); Assert.assertNotNull(msg); msg.acknowledge(); Assert.assertEquals(body, msg.getBodyBuffer().readString()); session.commit(); session.close(); }