微服务框架 SpringCloud微服务架构 28 数据同步 28.3 声明队列和交换机

news2024/11/9 2:37:16

微服务框架

【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】

SpringCloud微服务架构

文章目录

      • 微服务框架
      • SpringCloud微服务架构
      • 28 数据同步
        • 28.3 声明队列和交换机
          • 28.3.1 直接开干

28 数据同步

28.3 声明队列和交换机

28.3.1 直接开干

案例:利用MQ实现mysql与elasticsearch数据同步

利用课前资料提供的hotel-admin项目作为酒店管理的微服务。当酒店数据发生增、删、改时,要求对elasticsearch中数据也要完成相同操作。

在这里插入图片描述

步骤:

  • 导入课前资料提供的hotel-admin项目,启动并测试酒店数据的CRUD
  • 声明exchange、queue、RoutingKey【这一步】
  • 在hotel-admin中的增、删、改业务中完成消息发送
  • 在hotel-demo中完成消息监听,并更新elasticsearch中数据
  • 启动并测试数据同步功能

【在hotel-demo 中】

添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

在这里插入图片描述

记得刷一下

【配置MQ】

先把RabbitMQ 跑起来

在这里插入图片描述

编写配置文件

rabbitmq:
  host: 118.195.246.137
  port: 5672
  username: itcast
  password: 123321
  virtual-host: /

在这里插入图片描述

OK

【声明队列交换机】

package cn.itcast.hotel.constants;

/**
 * ClassName: MqConstants
 * date: 2022/11/3 16:48
 *
 * @author DingJiaxiong
 */


public class MqConstants {

    //交换机
    public final static String HOTEL_EXCHANGE = "hotel.topic";

    //监听新增和修改的队列
    public final static String HOTEL_INSERT_QUEUE = "hotel.insert.queue";

    //监听删除的队列
    public final static String HOTEL_DELETE_QUEUE = "hotel.delete.queue";

    //新增或修改的RoutingKey
    public final static String HOTEL_INSERT_KEY = "hotel.insert";

    //删除的RoutingKey
    public final static String HOTEL_DELETE_KEY = "hotel.delete";

}

【绑定】

package cn.itcast.hotel.config;

import cn.itcast.hotel.constants.MqConstants;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.TopicExchange;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * ClassName: MqConfig
 * date: 2022/11/3 16:55
 *
 * @author DingJiaxiong
 */

@Configuration
public class MqConfig {

    //交换机
    @Bean
    public TopicExchange topicExchange(){

        return new TopicExchange(MqConstants.HOTEL_EXCHANGE,true,false);
    }

    //两个队列
    //新增或修改
    @Bean
    public Queue insertQueue(){

        return new Queue(MqConstants.HOTEL_INSERT_QUEUE,true);
    }

    //删除
    @Bean
    public Queue deleteQueue(){

        return new Queue(MqConstants.HOTEL_DELETE_QUEUE,true);
    }

    //绑定关系
    @Bean
    public Binding insertQueueBinding(){
        return BindingBuilder.bind(insertQueue()).to(topicExchange()).with(MqConstants.HOTEL_INSERT_KEY);
    }

    @Bean
    public Binding deleteQueueBinding(){
        return BindingBuilder.bind(deleteQueue()).to(topicExchange()).with(MqConstants.HOTEL_DELETE_KEY);
    }

}

OK,这样就绑定好了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/74011.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Mybatis】一级缓存和二级缓存

【Mybatis】一级缓存和二级缓存&#xff08;一&#xff09;为什么需要缓存&#xff08;二&#xff09;一级缓存&#xff08;在SqlSession上缓存&#xff09;【1】示例代码【2】增删改操作会刷新一级缓存【3】一级缓存流程总结&#xff08;1&#xff09;一级缓存简介&#xff08…

多点DMALL冲刺港股:年亏损超9亿 腾讯IDG金蝶是股东

雷递网 雷建平 12月8日多点数智有限公司&#xff08;简称&#xff1a;“多点数智”&#xff09;日前递交招股书&#xff0c;准备在港交所上市。年亏损超9亿多点DMALL成立于2015年&#xff0c;为本地零售业提供基于云的一站式端到端的数字零售SaaS平台。多点DMALL提供的服务包括…

搜索是过拟合的生成;生成是欠拟合的搜索

神经搜索的最大竞争者可能来自于一种甚至不需要向量嵌入作为中间表示的技术 —— 一种直接返回你想要的结果的端到端技术。"那么&#xff0c;谁将是神经搜索最大的竞争对手&#xff1f;"本文作者&#xff1a;肖涵&#xff0c;Jina AI 创始人兼 CEO 谁将是神经搜索最大…

Redis框架(二):SpringDataRedis入门和序列化方式解决内存占用问题

SpringDataRedis入门和序列化方式解决内存占用问题基本介绍实例Demo自定义RedisTemplate序列化自定义的RestTemplate的内存占用问题StringRedisTemplate解决内存占用问题总结SpringCloud章节复习已经过去&#xff0c;新的章节Redis开始了&#xff0c;这个章节中将会回顾Redis 主…

c#入门-可选参数,不定长参数

可选参数 声明可选参数 函数的参数在声明时&#xff0c;可以同时为其赋值一个常量。 但是所有这样的参数&#xff0c;需要在所有必填参数的后面。 void Any(int i 10) {Console.WriteLine(i); }使用可选参数 稍后&#xff0c;在调用函数时&#xff0c;你可以不填可选参数。…

1 - 线程池的基础用法

参考&#xff1a;线程池的基本用法 - 简书 1、为什么要用线程池&#xff1f; 在java中&#xff0c;开启线程的方式一般分为以下三种&#xff1a; a. 继承Thread&#xff0c;实现其run方法&#xff1b; b. 实现Runnabler接口&#xff0c;通过Thread来实现线程&#xff1b; …

法的概念与大纲

一、法的概念 法是由国家制定或认可并由国家强制力保证实施的&#xff0c;反映特定物质生活条件所决定的统治阶级意志&#xff0c;以权利和义务为内容&#xff0c;以确认、保护和发展对统治阶级有利的社会关系和社会秩序为目的的规范系统。 二、法的特征 规范性 国家意志性 权…

微信恢复大师花了200多,套路一环接一环!

数据恢复本是一个科技进步的体现&#xff0c;让误操作导致的重要数据可以找回来。但是近年来数据恢复跟诈骗挂钩&#xff0c;数据恢复本是利好的事情&#xff0c;为什么会跟诈骗挂钩。究竟是什么原因呢&#xff1f;最近小编发现&#xff0c;百度推荐词出现&#xff1a;“微信恢…

Neural Network-神经网络算法本质

1. Word2vec~single CBOW算法推导BP word2vec主要实现方式有&#xff1a;skip-gram和CBOW。 CBOW的目的是根据上下文contextual words来预测当前中心词的概率&#xff0c;且上下文所有单词对当前中心词出现的概率影响权重是一样的&#xff0c;如在袋子中取词&#xff0c;取出…

痞子衡嵌入式:国内外串行NOR Flash厂商官网Cross Reference功能使用体验

大家好&#xff0c;我是痞子衡&#xff0c;是正经搞技术的痞子。今天痞子衡给大家讲的是国内外串行NOR Flash厂商官网Cross Reference功能。 串行 NOR Flash 是一个相对发展稳定的市场&#xff0c;目前全球市场约 90% 的份额被中国的三家厂商(Winbond华邦/MXIC旺宏/GigaDevice兆…

Java入门教程(26)——继承

文章目录1.继承的作用2.继承的关键字3.继承的特点4.实例5.instanceof 运算符继承是面向对象三大特征之一&#xff0c;继承可以让我们减少代码量&#xff0c;实现类的复用1.继承的作用 代码复用&#xff0c;更加容易实现类的扩展方便建模 2.继承的关键字 extends&#xff0c;…

网站都变灰了,几行代码可以实现

前言 这两天&#xff0c;我们经常逛的好多网站、app首页都变灰了&#xff0c;原因大家应该都知道了 网站变灰 ①B站 ②爱奇艺 ③ 腾讯视频 ④ csdn ⑤百度 怎么实现的呢&#xff1f; 难道这些网站开发商在网站开发的时候都准备一套灰色主题的UI么&#xff1f; 好奇心…

端水or信仰?ChatGPT“点评”Web3未来

近日&#xff0c;OpenAI发布了人工智能聊天机器人模型 ChatGPT&#xff0c;产品自11月30日发布到现在仅一周时间&#xff0c;就积累了上百万用户&#xff0c;广受大家好评。有人让它写代码&#xff0c;有人拿高考题目考验它&#xff0c;这些“难题”似乎都难不倒它&#xff0c;…

vue3 教程(上)

学 vue3 通过官方文档更详细&#xff0c;不过阅读本博客&#xff0c;可以更容易理解&#xff0c;且帮你速成&#xff01; 官方文档&#xff08;记得将API风格偏好切换为 组合式 否则你学的是vue2&#xff09; https://cn.vuejs.org/guide/introduction.html 学习前的准备 创建…

[synchronized ]关键字详解

目录 1.synchronized 特性 1.1互斥性 1.2内存刷新 1.3可重入 2.Java 标准库中的线程安全类 3.死锁问题 3.1 一个线程,一把锁 3.2 两个线程,两把锁 3.3 多个线程,多把锁 4.死锁的条件 1.synchronized 特性 1.1互斥性 synchronized 关键字会起到互斥效果,当某个线程执…

【C语言】字符串函数(一)

目录 一、strlen函数(计算字符串长度) 1、strlen函数的用途 2、strlen函数的使用 3、strlen函数的模拟实现 二、strcpy函数(字符串拷贝) 1、strcpy函数的用途 2、strcpy函数的使用 3、strcpy函数的模拟实现 三、strcat函数(字符串追加) 1、strcat函数的用途 2、strcat函数的使用…

【JavaSE】接口剩余内容

目录 1、接口使用实例 &#x1f4d5;逐步分析学生数组排序的写法 ✨思路&#xff1a; ✨代码实现 ✨弊端 &#x1f4d5;、改进 改进思路&#xff1a; 代码实现&#xff1a; 2、Cloneable接口和深拷贝 2.1、cloneable接口的作用 2.2、深拷贝和浅拷贝 2.2.1、浅拷贝 …

yum安装openldap2.4.44,并配置增量复制(Delta-syncrepl)环境

本文是在centos7环境下通过yum安装openldap2.4.44&#xff0c;并配置增量复制&#xff08;Delta-syncrepl&#xff09;环境 官网对于增量复制介绍&#xff1a;https://www.openldap.org/doc/admin24/replication.html#Delta-syncrepl%20replication Delta-syncrepl 是 syncrep…

ADI Blackfin DSP处理器-BF533的开发详解3:GPIO(含源代码)

我们从最基础的GPIO开始&#xff0c;先讲外设&#xff0c;这玩意不管是单片机&#xff0c;还是ARM&#xff0c;又或是FPGA&#xff0c;甚至SOC的芯片&#xff0c;都有GPIO&#xff0c;有共性&#xff0c;就好理解&#xff0c;让我们看看在ADI的DSP里头&#xff0c;GPIO是怎么一…

MySQL数据库学习(2)

一.MySQL语法书写规范&#xff1a; (1).SQL语句要以分号;结尾 在 RDBMS(关系型数据库)当中&#xff0c;SQL语句是逐条执行的&#xff0c;一条 SQL语句代表着数据库的一个操作。SQL语句是使用英文分号;结尾。 (2).SQL语句不区分大小写 SQL不区分关键字的大小写。例如&#xff0c…