List of usage examples for org.springframework.jms.core JmsTemplate receive
@Override @Nullable public Message receive(String destinationName) throws JmsException
From source file:net.lr.jmsbridge.BridgeServlet.java
/** * Forward HTTP request to a jms queue and listen on a temporary queue for the reply. * Connects to the jms server by using the username and password from the HTTP basic auth. *///from w ww . ja v a 2 s. co m @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String authHeader = req.getHeader("Authorization"); if (authHeader == null) { resp.setHeader("WWW-Authenticate", "Basic realm=\"Bridge\""); resp.sendError(HttpServletResponse.SC_UNAUTHORIZED, "auth"); return; } UserNameAndPassword auth = extractUserNamePassword(authHeader); PrintStream out = new PrintStream(resp.getOutputStream()); String contextPath = req.getContextPath(); String uri = req.getRequestURI(); String queueName = uri.substring(contextPath.length() + 1); final StringBuffer reqContent = retrieveRequestContent(req.getReader()); ConnectionFactory cf = connectionPool.getConnectionFactory(auth); JmsTemplate jmsTemplate = new JmsTemplate(); jmsTemplate.setConnectionFactory(cf); jmsTemplate.setReceiveTimeout(10000); final Destination replyDest = connectionPool.getReplyDestination(cf, auth); jmsTemplate.send(queueName, new MessageCreator() { @Override public Message createMessage(Session session) throws JMSException { TextMessage message = session.createTextMessage(reqContent.toString()); message.setJMSReplyTo(replyDest); return message; } }); Message replyMsg = jmsTemplate.receive(replyDest); if (replyMsg instanceof TextMessage) { TextMessage replyTMessage = (TextMessage) replyMsg; try { out.print(replyTMessage.getText()); } catch (JMSException e) { JmsUtils.convertJmsAccessException(e); } } }
From source file:org.springframework.integration.jms.request_reply.RequestReplyScenariosWithTempReplyQueuesTests.java
@SuppressWarnings("resource") @Test// w w w . j a v a 2 s . com public void messageCorrelationBasedOnRequestMessageId() throws Exception { ActiveMqTestUtils.prepare(); ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( "producer-temp-reply-consumers.xml", this.getClass()); RequestReplyExchanger gateway = context.getBean(RequestReplyExchanger.class); CachingConnectionFactory connectionFactory = context.getBean(CachingConnectionFactory.class); final JmsTemplate jmsTemplate = new JmsTemplate(connectionFactory); final Destination requestDestination = context.getBean("siOutQueue", Destination.class); new Thread(() -> { final Message requestMessage = jmsTemplate.receive(requestDestination); Destination replyTo = null; try { replyTo = requestMessage.getJMSReplyTo(); } catch (Exception e) { fail(); } jmsTemplate.send(replyTo, (MessageCreator) session -> { try { TextMessage message = session.createTextMessage(); message.setText("bar"); message.setJMSCorrelationID(requestMessage.getJMSMessageID()); return message; } catch (Exception e) { // ignore } return null; }); }).start(); gateway.exchange(new GenericMessage<String>("foo")); context.close(); }