Example usage for org.springframework.jms.core JmsTemplate receiveSelectedAndConvert

List of usage examples for org.springframework.jms.core JmsTemplate receiveSelectedAndConvert

Introduction

In this page you can find the example usage for org.springframework.jms.core JmsTemplate receiveSelectedAndConvert.

Prototype

@Override
    @Nullable
    public Object receiveSelectedAndConvert(String messageSelector) throws JmsException 

Source Link

Usage

From source file:com.atlantbh.jmeter.plugins.jmstools.JmsUtil.java

@Override
public SampleResult runTest(JavaSamplerContext ctx) {

    SampleResult result = new SampleResult();
    result.setContentType("plain/text");
    result.setDataType(SampleResult.TEXT);
    result.setDataEncoding(SampleResult.DEFAULT_HTTP_ENCODING);

    String connectionUrl = ctx.getParameter("connection.url");
    String bindingUrl = ctx.getParameter("binding.url");
    String message = ctx.getParameter("message");

    if (connectionUrl == null || "".equals(connectionUrl)) {
        result.setSuccessful(false);/*w w w  .  j av a 2s.c o  m*/
        result.setResponseMessage("Connection URL cannot be empty.");
        result.setResponseCode("0xDEAD");
    } else {
        if (bindingUrl == null || "".equals(bindingUrl)) {
            result.setSuccessful(false);
            result.setResponseMessage("Binding URL cannot be empty.");
            result.setResponseCode("0xDEAD");
        } else {
            try {
                ConnectionFactory connectionFactory = new AMQConnectionFactory(connectionUrl);
                AMQBindingURL burl = new AMQBindingURL(bindingUrl);

                Destination destinationProducer = new AMQAnyDestination(burl);
                JmsTemplate sender = new JmsTemplate();
                sender.setConnectionFactory(connectionFactory);
                sender.setDefaultDestination(destinationProducer);
                BinaryMessageConverter bmc = new BinaryMessageConverter();
                sender.setMessageConverter(bmc);

                BinaryMessagepostProcessor postProcessor = new BinaryMessagepostProcessor();

                sender.setDeliveryMode(2);
                int rt = 30000;
                try {
                    rt = Integer.valueOf(ctx.getParameter("receive.timeout"));
                } catch (Exception e) {
                }

                sender.setReceiveTimeout(rt);

                String direction = ctx.getParameter("direction");
                if (direction == null || "".equals(direction)) {
                    direction = "send";
                }
                if (direction.toLowerCase().equals("send")) {
                    Map<String, String> mp = getMessageProperties(ctx.getParameter("header.properties"));
                    postProcessor.setMessageProperties(mp);
                    sender.convertAndSend((Object) message, postProcessor);
                    result.setSuccessful(true);
                    result.setResponseMessage("Message sent.");
                } else {
                    if (direction.toLowerCase().equals("receive")) {

                        System.out.println("Receive");
                        String messageSelector = ctx.getParameter("message.selector");
                        System.out.println("Selector: " + messageSelector);
                        Object obj = null;
                        if (messageSelector != null && !"".equals(messageSelector)) {
                            obj = sender.receiveSelectedAndConvert(messageSelector);
                        } else {
                            obj = sender.receiveAndConvert();
                        }

                        if (obj != null) {
                            result.setSuccessful(true);
                            result.setResponseData(obj.toString().getBytes());
                            String paramName = ctx.getParameter("header.property.reference");
                            if (paramName != null && !"".equals(paramName))
                                JMeterUtils.setProperty(paramName,
                                        concatProperties(bmc.getMessageProperties()));
                        } else {
                            result.setSuccessful(false);
                            result.setResponseData("Conection timeout".getBytes());

                        }

                    } else {
                        result.setSuccessful(false);
                        result.setResponseMessage("Unknown direction.");

                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
                result.setSuccessful(!true);
                result.setResponseMessage("Exception");
                result.setResponseData(e.getMessage().getBytes());
            }

        }

    }

    return result;
}