mysql和elasticsearch数据同步方案:rocketmq做异步

先记录一下我新学习的东西所踩到的坑,elasticsearch的index必须是不包含大写字母的,不然会报错,还有rocketmq的consumerGroup是一个大坑,必须依据topic做区分,当有两个topic的消息队列时,一定要保证consumeGroup是两个不同的。

这是因为,Consumer会定期发送心跳,默认是30s一次。心跳会像全部broker发送,心跳包内容包括groupname,topicname1。然后broker端会缓存这个信息,以groupname为key,在broker端的缓存里,每次心跳就有可能覆盖之前的订阅信息。导致某一个consumer消费不到自己要订阅的topic了

存数据库并异步发送消息给消费者消费

mysql和elasticsearch数据同步方案:rocketmq做异步_第1张图片

消费者监听消息,这里设置延时10s进行数据同步,完成es数据插入

mysql和elasticsearch数据同步方案:rocketmq做异步_第2张图片

数据库插入三条数据,name:卤蛋,price:3500

数据库存入成功

mysql和elasticsearch数据同步方案:rocketmq做异步_第3张图片

 10s后查看,同步成功

mysql和elasticsearch数据同步方案:rocketmq做异步_第4张图片

 mysql和elasticsearch数据同步方案:rocketmq做异步_第5张图片

 

你可能感兴趣的:(java,开发语言,elasticsearch,rabbitmq,mysql)