SpringBoot+RabbitMQ+简单实例
pom.xml 加入依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
application.yml RabbitMQ配置
rabbitmq:
host: 127.0.0.1 //RabbitServer ip
port: 8088 //RabbitServer port
username: guest
password: guest
publisher-confirms: true
publisher-returns: true
template.mandatory: true
exchangeName: hvp_topic_default //自定义exchangeName
RabbitMQConfig 配置类
/**
* @ClassName RabbitConfig
* @Description RabbitMQ 配置类
* @Author FlyingBird
* @Date 2018/8/2 16:26
* @Version 1.0
**/
@Configuration
public class RabbitMQConfig {
@Value("${spring.rabbitmq.exchangeName}")//读取yml文件配置
private String exchangeName;
@Bean(name = "queuePush")//声明一个Queue
public Queue queuePush() {
return new Queue("topic.push");
}
@Bean(name = "queueEmail")
public Queue queueEmail() {
return new Queue("topic.email");
}
@Bean
public TopicExchange exchange() {
return new TopicExchange(exchangeName);//声明一个topic类型的exchange
}
@Bean //绑定
Binding bindingExchangePush(@Qualifier("queuePush") Queue queuePush, TopicExchange exchange) {
return BindingBuilder.bind(queuePush).to(exchange).with("topic.push");
}
@Bean
Binding bindingExchangeEmail(@Qualifier("queueEmail") Queue queueEmail, TopicExchange exchange) {
return BindingBuilder.bind(queueEmail).to(exchange).with("topic.email");// *表示一个词,#表示零个或多个词
}
}
生产者:
/**
* @ClassName Sender
* @Description 邮件相关生产者
* @Author FlyingBird
* @Date 2018/8/3 14:13
* @Version 1.0
**/
@Component
@Slf4j
public class EmailSender {
@Autowired
private RabbitTemplate rabbitTemplate;
@Value("${spring.rabbitmq.exchangeName}")
private String exchangeName;
public void sendMessage(String msg) {
log.info("开始发送消息 sendMessage: " + msg.toLowerCase());
rabbitTemplate.convertAndSend(exchangeName, "topic.email", msg);
log.info("结束发送消息 sendMessage: " + msg.toLowerCase());
}
}
消费者:
/**
* @ClassName EmailReceiver
* @Description 邮件相关消费者
* @Author FlyingBird
* @Date 2018/8/3 16:27
* @Version 1.0
**/
@Component
@Slf4j
public class EmailReceiver {
@Autowired
EmailService service;
@RabbitListener(queues = "topic.email")
public void process(String message) {
try {
log.info("邮件消费者接收到信息:" + message);
EmailEntity email = JsonUtils.parseObject(message, EmailEntity.class);
service.sendSimpleMessage(email);
} catch (RuntimeException e) {
log.error("Send Email Failed....", e);
// TODO 邮件发送失败,异常处理
}
}
}
就这样一个简单的Springboot+RabbitMQ的简单实现就完成了。
如果有问题,欢迎小伙伴们一起交流讨论,批评指正。