缓存架构之借助消息中间件RabbitMQ实现Redis缓存实时更新实战演练
一、背景介绍
前面,我们花了大量的时间来介绍消息中间件RabbitMQ,讲了其基本使用,其可靠性传输,这些对我们的缓存架构有什么用呢,我们直接上图来分析下:
我们要实现这部分功能,需要借助两个系统:
广告管理系统:生产广告的地方
缓存服务系统:消费广告的地方
这两个独立的系统又有着紧密的联系,一个是生产者,一个是消费者,我们如何建立这两个系统的联系呢,我们生产的广告,如何及时能通知你来获取呢?
通过RabbitMQ我们就建立了广告管理系统与缓存服务系统实时交互的桥梁。
二、核心功能介绍
1、广告管理系统
功能:生产广告,并将生产信息实时同步给RabbitMQ
1)添加依赖
org.springframework.boot
spring-boot-starter-amqp
${spring-boot.version}
org.codehaus.janino
janino
2.7.8
javax.mail
1.4.7
2)基本配置
@Configuration
public class RabbitConfig {
public final static String queueName = "ad_queue";
}
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
3)生产者消息确认机制
# 开启发送确认
spring.rabbitmq.publisher-confirms=true
# 开启发送失败退回
spring.rabbitmq.publisher-returns=true
4)发送消息
@Component
public class Sender implements RabbitTemplate.ConfirmCallback, RabbitTemplate.ReturnCallback{
private static Map map = new ConcurrentHashMap<>();
private final Logger emailLogger = LoggerFactory.getLogger("emailLogger");
@Autowired
private RabbitTemplate rabbitTemplate;
public void send(String routingKey,