Package amqp.spring.camel.component

Source Code of amqp.spring.camel.component.SpringAMQPProducerTest$ProducerTestObject

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
package amqp.spring.camel.component;

import java.io.Serializable;
import junit.framework.Assert;
import org.apache.camel.CamelContext;
import org.apache.camel.Component;
import org.apache.camel.Exchange;
import org.apache.camel.Producer;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.spi.Synchronization;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Test;
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;

public class SpringAMQPProducerTest extends CamelTestSupport {
   
    @Test
    public void testCreateContext() throws Exception {
        Component component = context().getComponent("spring-amqp", SpringAMQPComponent.class);
        Assert.assertNotNull(component);
    }
   
    @Test
    public void restartProducer() throws Exception {
        Producer producer = context().getEndpoint("spring-amqp:fanoutExchange?durable=false&autodelete=true&exclusive=false").createProducer();
        producer.start();
        producer.stop();
    }
   
    @Test
    public void sendMessage() throws Exception {
        context().createProducerTemplate().sendBody("direct:test.z", "HELLO WORLD");
    }
   
    @Test
    public void sendAsyncMessage() throws Exception {
        context().createProducerTemplate().asyncRequestBody("direct:test.x", "HELLO WORLD");
    }
   
    @Test
    public void sendAsyncCallbackMessage() throws Exception {
        context().createProducerTemplate().asyncCallbackSendBody("direct:test.w", "HELLO WORLD", new Synchronization() {
            @Override
            public void onComplete(Exchange exchange) {
                Assert.assertNull(exchange.getException());
            }

            @Override
            public void onFailure(Exchange exchange) {
                Assert.fail(exchange.getException() != null ? exchange.getException().getMessage() : "Failure on async callback");
            }
        });
    }
   
    @Test
    public void sendObject() throws Exception {
        context().createProducerTemplate().sendBody("direct:test.z", new ProducerTestObject());
    }
   
    @Test
    public void sendNull() throws Exception {
        context().createProducerTemplate().sendBody("direct:test.z", null);
    }
   
    @Test
    public void sendUsingDefaultExchange() throws Exception {
        context().createProducerTemplate().sendBody("direct:test.y", null);
    }
   
    @Test
    public void headerRoutingKey() throws Exception {
        MockEndpoint mockEndpoint = getMockEndpoint("mock:test.v");
        mockEndpoint.expectedMessageCount(1);
        context().createProducerTemplate().sendBodyAndHeader("direct:test.v", new ProducerTestObject(), SpringAMQPComponent.ROUTING_KEY_HEADER, "test.v");
        mockEndpoint.assertIsSatisfied();
    }
   
    @Test
    public void uriRoutingKey() throws Exception {
        MockEndpoint mockEndpoint = getMockEndpoint("mock:test.u");
        mockEndpoint.expectedMessageCount(1);
        context().createProducerTemplate().sendBody("direct:test.u", new ProducerTestObject());
        mockEndpoint.assertIsSatisfied();
    }
   
    @Override
    protected CamelContext createCamelContext() throws Exception {
        CachingConnectionFactory factory = new CachingConnectionFactory();
        RabbitTemplate amqpTemplate = new RabbitTemplate(factory);
        SpringAMQPComponent amqpComponent = new SpringAMQPComponent(factory);
        amqpComponent.setAmqpTemplate(amqpTemplate);
       
        CamelContext camelContext = super.createCamelContext();
        camelContext.addComponent("spring-amqp", amqpComponent);
        return camelContext;
    }
   
    @Override
    protected RouteBuilder createRouteBuilder() throws Exception {
        return new RouteBuilder() {
            @Override
            public void configure() throws Exception {
              from("direct:test.y").to("spring-amqp::?durable=false&autodelete=true&exclusive=false");
                from("direct:test.z").to("spring-amqp:fanoutExchange?durable=false&autodelete=true&exclusive=false");
                from("direct:test.x").to("spring-amqp:fanoutExchange?durable=false&autodelete=true&exclusive=false");
                from("direct:test.w").to("spring-amqp:fanoutExchange?durable=false&autodelete=true&exclusive=false");
                from("direct:test.v").to("spring-amqp:topicExchange?type=topic&durable=false&autodelete=true&exclusive=false");
                from("direct:test.u").to("spring-amqp:topicExchange:test.u?durable=false&autodelete=true&exclusive=false");
               
                from("spring-amqp:topicExchange:queue.v:#.v?type=topic&durable=false&type=direct&autodelete=true&exclusive=false").to("mock:test.v");
                from("spring-amqp:topicExchange:queue.u:#.u?type=topic&durable=false&type=direct&autodelete=true&exclusive=false").to("mock:test.u");
            }
        };
    }
   
    public static class ProducerTestObject implements Serializable {
        private static final long serialVersionUID = -9121162751092118857L;
        private String test;

        public String getTest() {
            return test;
        }

        public void setTest(String test) {
            this.test = test;
        }
    }
}
TOP

Related Classes of amqp.spring.camel.component.SpringAMQPProducerTest$ProducerTestObject

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.