package com.jthink.skyeye.data.rabbitmq.configuration;
import org.springframework.amqp.core.*;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.support.converter.JsonMessageConverter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* JThink@JThink
*
* @author JThink
* @version 0.0.1
* @desc rabbitmq的配置
* @date 2016-11-22 09:16:16
*/
@Configuration
@ConfigurationProperties(prefix = "spring.queue.rabbitmq")
public class AmqpConfiguration {
// 队列名字
private String queue;
// exchange
private String exchange;
// routingKey
private String routingKey;
@Bean
public Queue queue() {
return new Queue(this.queue, true);
}
@Bean
public DirectExchange defaultExchange() {
return new DirectExchange(this.exchange);
}
@Bean
public Binding binding(Queue queue, DirectExchange exchange) {
return BindingBuilder.bind(queue).to(exchange).with(this.routingKey);
}
@Bean
public JsonMessageConverter jsonMessageConverter() {
return new JsonMessageConverter();
}
@Bean
public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory, JsonMessageConverter jsonMessageConverter) {
RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
rabbitTemplate.setQueue(this.queue);
rabbitTemplate.setExchange(this.exchange);
rabbitTemplate.setRoutingKey(this.routingKey);
rabbitTemplate.setMessageConverter(jsonMessageConverter);
return rabbitTemplate;
}
public String getQueue() {
return queue;
}
public void setQueue(String queue) {
this.queue = queue;
}
public String getExchange() {
return exchange;
}
public void setExchange(String exchange) {
this.exchange = exchange;
}
public String getRoutingKey() {
return routingKey;
}
public void setRoutingKey(String routingKey) {
this.routingKey = routingKey;
}
}