首页广告缓存更新
1.1 实现思路
1.2 发送消息到MQ
1). 配置MQ中组件
@Configuration
public class RabbitMQConfig {
//定义交换机名称
public static final String GOODS_UP_EXCHANGE=“goods_up_exchange”;
public static final String GOODS_DOWN_EXCHANGE=“goods_down_exchange”;
//定义队列名称
public static final String AD_UPDATE_QUEUE="ad_update_queue";
public static final String SEARCH_ADD_QUEUE="search_add_queue";
public static final String SEARCH_DEL_QUEUE="search_del_queue";
//声明队列
@Bean
public Queue queue(){
return new Queue(AD_UPDATE_QUEUE);
}
}
2). 数据监控服务中发送消息
for (CanalEntry.Column column : rowData.getAfterColumnsList()) {
if (“position”.equals(column.getName())){
System.out.println(“发送最新的数据到MQ:”+column.getValue());
//发送消息 默认交换机 ----> web_index_lb
rabbitTemplate.convertAndSend("", RabbitMQConfig.AD_UPDATE_QUEUE,column.getValue());
}
}
1.3 消费者获取消息执行更新
1). pom.xml
org.springframework.boot
spring-boot-starter-amqp
com.squareup.okhttp3
okhttp
3.9.0
2). application.yml
rabbitmq:
host: 192.168.192.152
3). 消息监听类,消费者的逻辑处理
逻辑 : 接收消息 , 调用接口(lua脚本)
@Component
public class AdListener {
@RabbitListener(queues = "ad_update_queue")
public void receiveMessage(String message){
System.out.println("接收到的消息为:"+message);
//发起远程调用
OkHttpClient okHttpClient = new OkHttpClient();
String url = "http://192.168.192.152/ad_update?position="+message;
Request request = new Request.Builder().url(url).build();
Call call = okHttpClient.newCall(request);
//设置回调
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
//请求失败
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
//请求成功
System.out.println("请求成功:"+response.message());
}
});
}
}