由于最近在鼓捣SpringBoot,需要整合RabbitMQ,抽出时间看了下Spring AMQP,下面就简单记录一下,基本的概念介绍,请大家移步别的帖子,我这里就捞些干的说。
在这里,关于项目的自建对象包路径已删除,有注意的地方会罗列出来。
发布者配置
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.TopicExchange;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
import org.springframework.amqp.rabbit.core.RabbitMessagingTemplate;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.converter.MappingJackson2MessageConverter;
@Configuration
public class RabbitMQProducerConfiguration {
@Bean
RabbitAdmin rabbitAdmin(ConnectionFactory connectionFactory) {
return new RabbitAdmin(connectionFactory);
}
@Bean
Queue queue(RabbitAdmin rabbitAdmin) {
Queue queue = new Queue(RabbitMQConsants.QUEUE_NAME, true);
rabbitAdmin.declareQueue(queue);
return queue;
}
@Bean
Queue ackQueue(RabbitAdmin rabbitAdmin) {
Queue queue = new Queue(RabbitMQConsants.ACK_QUEUE_NAME, true);
rabbitAdmin.declareQueue(queue);
return queue;
}
@Bean
TopicExchange exchange(RabbitAdmin rabbitAdmin) {
TopicExchange topicExchange = new TopicExchange(RabbitMQConsants.TOPIC_EXCHANGE_NAME);
rabbitAdmin.declareExchange(topicExchange);
return topicExchange;
}
@Bean
Binding bindingExchange(Queue queue, TopicExchange exchange, RabbitAdmin rabbitAdmin) {
Binding binding = BindingBuilder.bind(queue).to(exchange).with(RabbitMQConsants.QUEUE_NAME);
rabbitAdmin.declareBinding(binding);
return binding;
}
@Bean
Binding bindingExchangeAck(Queue ackQueue, TopicExchange exchange, RabbitAdmin rabbitAdmin) {
Binding binding = BindingBuilder.bind(ackQueue).to(exchange).with(RabbitMQConsants.ACK_QUEUE_NAME);
rabbitAdmin.declareBinding(binding);
return binding;