栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mysql+canal+rabbitMq+Springboot 实现数据库数据同步监听

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mysql+canal+rabbitMq+Springboot 实现数据库数据同步监听

mysql+canal+rabbitMq+Springboot 实现数据库数据同步监听
本机:Mac
mysql:5.7 自己弄的测试机
canal:canal.deployer-1.1.5 Canal
MQ: docker- rabbitmq- 3.7.7-management(有图形界面)

第一步 开启数据库日志

使用 show variables like ‘%log_bin%’; 查看是否成功启用MySQL的binlog功能。
没有的话,去手动开启,这个不会的话,自己可以网上查询一下
开启后:

第二步 RabbitMQ

新建一个Exchange

消费账号根据自己的需要。我这边是自己测试研究用的,直接就用admin。或者guest

Vhost权限是要的,不然后面有影响

第三步canal

1.1.5版本
canal.properties
##换成rabbitMQ
canal.serverMode = rabbitMQ
#对应修改rabbitMQ的配置

rabbitmq.host =127.0.0.1
rabbitmq.virtual.host =my_vhost
rabbitmq.exchange =exchange_user_sync
rabbitmq.username =admin
rabbitmq.password =admin
rabbitmq.deliveryMode =

instance.properties

# table regex 具体哪个数据库哪个表,可以默认全部
canal.instance.filter.regex=test.user,test.sbc_user
# table black regex
canal.instance.filter.black.regex=mysql\.slave_.*

然后启动

第四步-部署项目

xml

 
        1.8
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            com.alibaba.otter
            canal.client
            1.1.4
        

        
            org.springframework.cloud
            spring-cloud-starter-stream-rabbit
            2.0.1.RELEASE
        
    
        
            org.projectlombok
            lombok
            true
        

    

    
        
            
                 
                org.springframework.cloud
                spring-cloud-dependencies
                Greenwich.SR4
                pom
                import
            
        
    


    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    
application.properties
server.port=8080
spring.application.name=mla
spring.rabbitmq.host= localhost
spring.rabbitmq.port= 5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=admin
spring.rabbitmq.virtual-host=my_vhost

spring.cloud.stream.bindings.sms-service-message-output.destination=exchange_user_sync
spring.cloud.stream.bindings.sms-service-message-input.destination=exchange_user_sync

相关类

package com.mla.test.demo.MQ;

import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.annotation.Input;
import org.springframework.cloud.stream.annotation.Output;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.SubscribableChannel;


@EnableBinding
public interface MessageBinding {

    //发送
    String Q_SMS_SERVICE_MESSAGE_SEND = "sms-service-message-output";
    //接收
    String Q_SMS_SERVICE_MESSAGE_SEND_A = "sms-service-message-input";

    
    @Output(Q_SMS_SERVICE_MESSAGE_SEND)
    MessageChannel subOutput();

    
    @Input(Q_SMS_SERVICE_MESSAGE_SEND_A)
    SubscribableChannel subInput();
}

实现

package com.mla.test.demo.MQ;

import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.annotation.StreamListener;
import org.springframework.stereotype.Component;



@Slf4j
@Component
@EnableBinding(MessageBinding.class)
public class MessageImpl {


    @StreamListener(MessageBinding.Q_SMS_SERVICE_MESSAGE_SEND_A)
    public void subGoodsInfoStock(String json) {
        log.info("接收的信息:{}",json);

    }
}

一切就绪后启动
mysql:新增

消息接受者接收:

转换数据后:

{
    "data":[
        {
            "user_id":"7",
            "pass_word1":"99999",
            "user_name":"000000"
        }
    ],
    "database":"test",
    "es":1628066207000,
    "id":148,
    "isDdl":false,
    "mysqlType":{
        "user_id":"bigint(20)",
        "pass_word1":"varchar(255)",
        "user_name":"varchar(255)"
    },
    "old":null,
    "pkNames":[
        "user_id"
    ],
    "sql":"",
    "sqlType":{
        "user_id":-5,
        "pass_word":12,
        "user_name":12
    },
    "table":"user",
    "ts":1628066210647,
    "type":"INSERT"
}

其中有很多字面意思很好理解的。table, sqlType等等。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1027832.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号