@Override public String getStringProperty(final String name) throws JMSException { if (MessageUtil.JMSXDELIVERYCOUNT.equals(name)) { return String.valueOf(message.getDeliveryCount()); } try { if (MessageUtil.JMSXGROUPID.equals(name)) { return message.getStringProperty(org.apache.activemq.artemis.api.core.Message.HDR_GROUP_ID); } else if (MessageUtil.JMSXUSERID.equals(name)) { return message.getValidatedUserID(); } else { return message.getStringProperty(name); } } catch (ActiveMQPropertyConversionException e) { throw new MessageFormatException(e.getMessage()); } }
/** * Get an HTTP header value from a JMS Message * * @param message * @param name * @return the HTTP header String */ public static String getHttpHeader(ClientMessage message, String name) { return message.getStringProperty(HttpHeaderProperty.toPropertyName(name)); }
/** * Get an HTTP header value from a JMS Message * * @param message * @param name * @return the HTTP header String */ public static String getHttpHeader(ClientMessage message, String name) { return message.getStringProperty(HttpHeaderProperty.toPropertyName(name)); }
protected void buildHeaders(Response.ResponseBuilder builder) { for (SimpleString key : message.getPropertyNames()) { String k = key.toString(); String headerName = HttpHeaderProperty.fromPropertyName(k); if (headerName == null) { continue; } builder.header(headerName, message.getStringProperty(k)); ActiveMQRestLogger.LOGGER.debug("Adding " + headerName + "=" + message.getStringProperty(k)); } }
protected void buildHeaders(Response.ResponseBuilder builder) { for (SimpleString key : message.getPropertyNames()) { String k = key.toString(); String headerName = HttpHeaderProperty.fromPropertyName(k); if (headerName == null) { continue; } builder.header(headerName, message.getStringProperty(k)); ActiveMQRestLogger.LOGGER.debug("Adding " + headerName + "=" + message.getStringProperty(k)); } }
@Override public String getStringProperty(final String name) throws JMSException { if (MessageUtil.JMSXDELIVERYCOUNT.equals(name)) { return String.valueOf(message.getDeliveryCount()); } try { if (MessageUtil.JMSXGROUPID.equals(name)) { return message.getStringProperty(org.apache.activemq.artemis.api.core.Message.HDR_GROUP_ID); } else if (MessageUtil.JMSXUSERID.equals(name)) { return message.getValidatedUserID(); } else { return message.getStringProperty(name); } } catch (ActiveMQPropertyConversionException e) { throw new MessageFormatException(e.getMessage()); } }
@Override public String getStringProperty(final String name) throws JMSException { if (MessageUtil.JMSXDELIVERYCOUNT.equals(name)) { return String.valueOf(message.getDeliveryCount()); } try { if (MessageUtil.JMSXGROUPID.equals(name)) { return message.getStringProperty(org.apache.activemq.artemis.api.core.Message.HDR_GROUP_ID); } else if (MessageUtil.JMSXUSERID.equals(name)) { return message.getValidatedUserID(); } else { return message.getStringProperty(name); } } catch (ActiveMQPropertyConversionException e) { throw new MessageFormatException(e.getMessage()); } }
/** * @param consumer * @throws Exception */ private void readConsumer(String consumerName, ClientConsumer consumer) throws Exception { ClientMessage message = consumer.receive(5000); assertNotNull(message); System.out.println("consumer = " + consumerName + " message, color=" + message.getStringProperty("color") + ", msg = " + message.getStringProperty("value")); message.acknowledge(); }
public static <T> T getEntity(ClientMessage msg, Class<T> type, Type genericType, ResteasyProviderFactory factory) { int size = msg.getBodySize(); if (size <= 0) return null; byte[] body = new byte[size]; msg.getBodyBuffer().readBytes(body); String contentType = msg.getStringProperty(HttpHeaderProperty.CONTENT_TYPE); if (contentType == null) { throw new UnknownMediaType("Message did not have a Content-Type header cannot extract entity"); } MediaType ct = MediaType.valueOf(contentType); MessageBodyReader<T> reader = factory.getMessageBodyReader(type, genericType, null, ct); if (reader == null) { throw new UnmarshalException("Unable to find a JAX-RS reader for type " + type.getName() + " and media type " + contentType); } Providers current = ResteasyProviderFactory.getContextData(Providers.class); ResteasyProviderFactory.pushContext(Providers.class, factory); try { return reader.readFrom(type, genericType, null, ct, new Headers<String>(), new ByteArrayInputStream(body)); } catch (IOException e) { throw new RuntimeException(e); } finally { ResteasyProviderFactory.popContextData(Providers.class); if (current != null) ResteasyProviderFactory.pushContext(Providers.class, current); } }
public static <T> T getEntity(ClientMessage msg, Class<T> type, Type genericType, ResteasyProviderFactory factory) { int size = msg.getBodySize(); if (size <= 0) return null; byte[] body = new byte[size]; msg.getBodyBuffer().readBytes(body); String contentType = msg.getStringProperty(HttpHeaderProperty.CONTENT_TYPE); if (contentType == null) { throw new UnknownMediaType("Message did not have a Content-Type header cannot extract entity"); } MediaType ct = MediaType.valueOf(contentType); MessageBodyReader<T> reader = factory.getMessageBodyReader(type, genericType, null, ct); if (reader == null) { throw new UnmarshalException("Unable to find a JAX-RS reader for type " + type.getName() + " and media type " + contentType); } Providers current = ResteasyProviderFactory.getContextData(Providers.class); ResteasyProviderFactory.pushContext(Providers.class, factory); try { return reader.readFrom(type, genericType, null, ct, new Headers<String>(), new ByteArrayInputStream(body)); } catch (IOException e) { throw new RuntimeException(e); } finally { ResteasyProviderFactory.popContextData(Providers.class); if (current != null) ResteasyProviderFactory.pushContext(Providers.class, current); } }
@Test public void testSimpleSendNoXAJMS1() throws Exception { Queue q = ActiveMQJMSClient.createQueue(MDBQUEUE); try (ClientSessionFactory sf = locator.createSessionFactory(); ClientSession session = sf.createSession(); ClientConsumer consVerify = session.createConsumer(MDBQUEUE); Connection conn = qraConnectionFactory.createConnection(); ) { Session jmsSess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); session.start(); MessageProducer producer = jmsSess.createProducer(q); // These next 4 lines could be written in a single line however it makes difficult for debugging TextMessage msgsend = jmsSess.createTextMessage("hello"); msgsend.setStringProperty("strvalue", "hello"); producer.send(msgsend); ClientMessage msg = consVerify.receive(1000); assertNotNull(msg); assertEquals("hello", msg.getStringProperty("strvalue")); } }
@Test public void testSimpleSendNoXAJMS1() throws Exception { Queue q = ActiveMQJMSClient.createQueue(MDBQUEUE); try (ClientSessionFactory sf = locator.createSessionFactory(); ClientSession session = sf.createSession(); ClientConsumer consVerify = session.createConsumer(MDBQUEUE); Connection conn = qraConnectionFactory.createConnection(); ) { Session jmsSess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); session.start(); MessageProducer producer = jmsSess.createProducer(q); // These next 4 lines could be written in a single line however it makes difficult for debugging TextMessage msgsend = jmsSess.createTextMessage("hello"); msgsend.setStringProperty("strvalue", "hello"); producer.send(msgsend); ClientMessage msg = consVerify.receive(1000); assertNotNull(msg); assertEquals("hello", msg.getStringProperty("strvalue")); } } }
@Test public void testSimpleSendNoXAJMSContext() throws Exception { Queue q = ActiveMQJMSClient.createQueue(MDBQUEUE); try (ClientSessionFactory sf = locator.createSessionFactory(); ClientSession session = sf.createSession(); ClientConsumer consVerify = session.createConsumer(MDBQUEUE); JMSContext jmsctx = qraConnectionFactory.createContext(); ) { session.start(); // These next 4 lines could be written in a single line however it makes difficult for debugging JMSProducer producer = jmsctx.createProducer(); producer.setProperty("strvalue", "hello"); TextMessage msgsend = jmsctx.createTextMessage("hello"); producer.send(q, msgsend); ClientMessage msg = consVerify.receive(1000); assertNotNull(msg); assertEquals("hello", msg.getStringProperty("strvalue")); } }
@Test public void testSimpleSendNoXAJMSContext() throws Exception { Queue q = ActiveMQJMSClient.createQueue(MDBQUEUE); try (ClientSessionFactory sf = locator.createSessionFactory(); ClientSession session = sf.createSession(); ClientConsumer consVerify = session.createConsumer(MDBQUEUE); JMSContext jmsctx = qraConnectionFactory.createContext(); ) { session.start(); // These next 4 lines could be written in a single line however it makes difficult for debugging JMSProducer producer = jmsctx.createProducer(); producer.setProperty("strvalue", "hello"); TextMessage msgsend = jmsctx.createTextMessage("hello"); producer.send(q, msgsend); ClientMessage msg = consVerify.receive(1000); assertNotNull(msg); assertEquals("hello", msg.getStringProperty("strvalue")); } }
@Test public void testNonMatchingMessagesFollowedByMatchingMessages() throws Exception { ClientMessage message = session.createMessage(false); message.putStringProperty("animal", "hippo"); producer.send(message); assertNull(consumer.receiveImmediate()); message = session.createMessage(false); message.putStringProperty("animal", "giraffe"); log.info("sending second msg"); producer.send(message); ClientMessage received = consumer.receiveImmediate(); assertNotNull(received); assertEquals("giraffe", received.getStringProperty("animal")); assertNull(consumer.receiveImmediate()); session.close(); }
@Test public void testNonMatchingMessagesFollowedByMatchingMessagesMany() throws Exception { for (int i = 0; i < QueueImpl.MAX_DELIVERIES_IN_LOOP * 2; i++) { ClientMessage message = session.createMessage(false); message.putStringProperty("animal", "hippo"); producer.send(message); } assertNull(consumer.receiveImmediate()); for (int i = 0; i < QueueImpl.MAX_DELIVERIES_IN_LOOP * 2; i++) { ClientMessage message = session.createMessage(false); message.putStringProperty("animal", "giraffe"); producer.send(message); } for (int i = 0; i < QueueImpl.MAX_DELIVERIES_IN_LOOP * 2; i++) { ClientMessage received = consumer.receiveImmediate(); assertNotNull(received); assertEquals("giraffe", received.getStringProperty("animal")); } assertNull(consumer.receiveImmediate()); session.close(); }
@Test public void testBasicSend() throws Exception { SimpleString ea = new SimpleString("EA"); SimpleString adSend = new SimpleString("a1"); SimpleString qName = new SimpleString("q1"); SimpleString eq = new SimpleString("EA1"); AddressSettings addressSettings = new AddressSettings().setExpiryAddress(ea); server.getAddressSettingsRepository().addMatch("#", addressSettings); clientSession.createQueue(ea, eq, null, false); clientSession.createQueue(adSend, qName, null, false); ClientProducer producer = clientSession.createProducer(adSend); ClientMessage clientMessage = createTextMessage(clientSession, "heyho!"); clientMessage.setExpiration(System.currentTimeMillis()); producer.send(clientMessage); clientSession.start(); ClientConsumer clientConsumer = clientSession.createConsumer(qName); ClientMessage m = clientConsumer.receiveImmediate(); Assert.assertNull(m); m = clientConsumer.receiveImmediate(); Assert.assertNull(m); clientConsumer.close(); clientConsumer = clientSession.createConsumer(eq); m = clientConsumer.receive(500); Assert.assertNotNull(m); Assert.assertEquals(qName.toString(), m.getStringProperty(Message.HDR_ORIGINAL_QUEUE)); Assert.assertEquals(adSend.toString(), m.getStringProperty(Message.HDR_ORIGINAL_ADDRESS)); Assert.assertNotNull(m); Assert.assertEquals(m.getBodyBuffer().readString(), "heyho!"); m.acknowledge(); }
@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 testBasicSend() throws Exception { SimpleString dla = new SimpleString("DLA"); SimpleString qName = new SimpleString("q1"); SimpleString adName = new SimpleString("ad1"); AddressSettings addressSettings = new AddressSettings().setMaxDeliveryAttempts(1).setDeadLetterAddress(dla); server.getAddressSettingsRepository().addMatch(adName.toString(), addressSettings); SimpleString dlq = new SimpleString("DLQ1"); clientSession.createQueue(dla, dlq, null, false); clientSession.createQueue(adName, qName, null, false); ClientProducer producer = clientSession.createProducer(adName); producer.send(createTextMessage(clientSession, "heyho!")); clientSession.start(); ClientConsumer clientConsumer = clientSession.createConsumer(qName); ClientMessage m = clientConsumer.receive(500); m.acknowledge(); Assert.assertNotNull(m); Assert.assertEquals(m.getBodyBuffer().readString(), "heyho!"); // force a cancel clientSession.rollback(); m = clientConsumer.receiveImmediate(); Assert.assertNull(m); clientConsumer.close(); clientConsumer = clientSession.createConsumer(dlq); m = clientConsumer.receive(500); Assert.assertNotNull(m); assertEquals("q1", m.getStringProperty(Message.HDR_ORIGINAL_QUEUE)); assertEquals("ad1", m.getStringProperty(Message.HDR_ORIGINAL_ADDRESS)); Assert.assertEquals(m.getBodyBuffer().readString(), "heyho!"); }
assertEquals("dumb", msg.getStringProperty("userName")); msg.acknowledge(); assertNull(consumer.receiveImmediate()); assertEquals("an", msg.getStringProperty("userName")); msg.acknowledge(); assertNull(consumerAnother.receiveImmediate());