SpringBoot 整合 rabbitMQ
application.yml设置
spring:
rabbitmq:
host: localhost
username: admin
password: admin
创建交换机,消息队列,并进行绑定
@Configuration
public class RabbitMQConfig {
private static final String TOPIC_NAME = "top_name";
private static final String QUEUE_NAME = "queue_name";
@Bean("queueEx")
public Exchange queueEx(){
return ExchangeBuilder.topicExchange(TOPIC_NAME).durable(true).build();
}
@Bean("queue")
public Queue queue(){
return QueueBuilder.durable(QUEUE_NAME).build();
}
@Bean
public Binding queueExchange(@Qualifier("queueEx") Exchange exchange,@Qualifier("queue") Queue queue){
return BindingBuilder.bind(queue).to(exchange).with("a.#").noargs();
}
}
@Autowired
private RabbitTemplate rabbitTemplate;
生产者
public void q(){
rabbitTemplate.convertAndSend("top_name","a.qwe","rabbitmqboot");
}
消费者
@RabbitListener(queues = "queue_name")
public void listenerq(Message message,Channel channel){
System.out.println(new String(message.getBody()));
}
消息可靠投递
Application.yml配置
rabbitmq:
publisher-confirm-type: correlated
Java代码配置
package com.xiaoyu.config;
import org.springframework.amqp.core.ReturnedMessage;
import org.springframework.amqp.rabbit.connection.CorrelationData;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component
public class PubConfirmAndReturn implements RabbitTemplate.ReturnsCallback,RabbitTemplate.ConfirmCallback{