Spring Cloud + Mybatis + интеграция с сиденьями

Java

Заявление об авторских правах: эта статья является оригинальной статьей блоггера и соответствует соглашению об авторских правах CC 4.0 BY-SA. Пожалуйста, приложите ссылку на оригинальный источник и это заявление для перепечатки.
Ссылка на эту статью:Гу Депэн.GitHub.IO/note/2019/1…
демонстрационный пример:GitHub.com/Гу Депэн/…

1. Клиент

1. Ведущий пакет

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
    <version>2.1.1.RELEASE</version>
</dependency>

2. Напишите класс конфигурации

@Configuration
public class DataSourceConfig {

    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource druidDataSource() {
        DruidDataSource druidDataSource = new DruidDataSource();
        return druidDataSource;
    }

    @Primary
    @Bean("dataSource")
    public DataSourceProxy dataSource(DataSource druidDataSource) {
        return new DataSourceProxy(druidDataSource);
    }

    @Bean
    public SqlSessionFactory sqlSessionFactory(DataSourceProxy dataSourceProxy) throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSourceProxy);
        factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
            .getResources("classpath*:/mapper/*.xml"));
        return factoryBean.getObject();
    }
}

3. Изменить класс запуска

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)

4. Добавьте аннотации к методам, которым нужно открывать распределенные вещи

@GlobalTransactional

2. Сервер

1. Скачать сеата-сервер

[seata-server]{GitHub.com/цвет ах/цвет ах…}

2. Измените файл конфигурации (в этой статье в качестве примера используется nacos, а запись хранилища — mysql)

Измените реестр.conf в conf

registry {
  # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
  type = "nacos"

  nacos {
    serverAddr = "localhost"
    namespace = "piblic"
    cluster = "default"
  }
}

config {
  # file、nacos 、apollo、zk、consul、etcd3
  type = "nacos"

  nacos {
    serverAddr = "localhost"
    #namespace为空,否则后面会报找不到store.db.driver-class-name找不到
    namespace = ""
  }
}

Измените тип в реестре на nacos и настройте serverAddr nacos для обслуживания вашего адреса nacos без http и номера порта. По умолчанию он будет подключаться к вашему порту 8858. Если вам нужно изменить порт, измените порт в файле nacos-config.sh.

Скопируйте реестр.conf на каждый ресурс, используя сервис Seata.

Измените nacos-config.txt в conf

store.mode=db
store.db.datasource=dbcp
store.db.db-type=mysql
store.db.driver-class-name=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true
store.db.user=mysql
store.db.password=mysql

Измените store.mode на db и измените соответствующий файл конфигурации db на свой собственный mysql. Изменить service.vgroup_mapping.my_test_tx_group=свойство по умолчанию После версии 0.9.0.1: my_test_tx_group изменено на собственное имя службы (spring.application.name)+"-seata-service-group" До версии 0.9.0.1: my_test_tx_group изменяется на собственное имя службы (spring.application.name)+"-fescar-service-group" Это можно увидеть в GlobalTransactionAutoConfiguration в рамках проекта spring-cloud-alibaba-seata.

GlobalTransactionAutoConfiguration

Сколько сервисов нужно использовать, чтобы добавить, сколько service.vgroup_mapping

Выполнить nacos-config.shNacos-Server-IP(Nacos-Server-IP — это IP-адрес вашей службы nacos), первый шаг — обновить конфигурацию в nacos-config.txt до nacos.Если nacos-config.txt повторно изменен, выполните команду еще раз. Или войдите в интерфейс управления nacos, чтобы изменить его напрямую.

После добавления, удаления и изменения сервисов вы можете внести соответствующие изменения в конфигурацию nacos.

3. Создайте таблицу

Выполните оператор создания таблицы в базе данных store.db.url на предыдущем шаге (db_store.sql в conf)

Выполните оператор создания таблицы (db_undo_log.sql в conf) в каждой бизнес-базе данных.