rabbitMQ:先放两张图 方便记忆
视频教程:https://study.163.com/course/courseMain.htm?courseId=1004576013
环境:首先要安装好 rabbitMQ
springboot 集成 rabbitMQ还是挺简单的。
rabbitMQ的原理是(个人理解),自己做好的demo已经保存到百度网盘下。
生产者:发送消息给交换器 exchange
消费者:监听队列消息
队列:队列和交换器绑定
交换器:生产者发送消息给路由器 交换器根据规则发送消息到队列
1.创建一个springboot项目 依赖:web,rabbitMQ
2.配置properties
spring.application.name=rabbitMQ
server.port=8080
spring.rabbitmq.host=172.17.0.50
spring.rabbitmq.port=5672
spring.rabbitmq.username=hanhao
spring.rabbitmq.password=hanhao
第二种配置:direct
spring.application.name=rabbitDirectProvider
server.port=9999
spring.rabbitmq.host=172.17.0.50
spring.rabbitmq.port=5672
spring.rabbitmq.username=hanhao
spring.rabbitmq.password=hanhao
mq.config.exchange=log.direct
第三种:topic 匹配模式
消费者:
package com.bicon.directconsumer;
import org.springframework.amqp.core.ExchangeTypes;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
@RabbitListener(bindings=@QueueBinding(
value=@Queue(value="${mq.config.queue.error}",autoDelete="true"),
exchange=@Exchange(value="${mq.config.exchange}",type=ExchangeTypes.TOPIC),
key="*.log.error"
)
)
public class ErrorReceive {
@RabbitHandler
public void process(String msg) {
System.out.println("接收到ERROR:"+msg);
}
}
生产者:
package com.bicon.directprovider;
import javax.validation.Valid;
import net.bytebuddy.asm.Advice.This;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class OrderSender {
@Autowired
private AmqpTemplate rabbitTemplate;
@Value("${mq.config.exchange}")
private String exchange;
public void send(String msg){
this.rabbitTemplate.convertAndSend(this.exchange,"order.log.info",msg);
this.rabbitTemplate.convertAndSend(this.exchange,"order.log.debug",msg);
this.rabbitTemplate.convertAndSend(this.exchange,"order.log.warn",msg);
this.rabbitTemplate.convertAndSend(this.exchange,"order.log.error",msg);
}
}
来源:oschina
链接:https://my.oschina.net/u/4293665/blog/4061828