服务异步通讯——springcloud

服务异步通讯——springcloud

文章目录

  • 服务异步通讯——springcloud
    • 初始MQ
    • RabbitMQ快速入门
      • 单机部署
        • 1.1.下载镜像
        • 安装MQ
    • SpringAMQP
      • work Queue 工作队列
      • Fanout Exchange广播模式
      • DirectExchange路由模式
      • TopicExchange话题模式
    • 消息转换器

在这里插入图片描述

初始MQ

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

RabbitMQ快速入门

官网https://www.rabbitmq.com/

单机部署

我们在Centos7虚拟机中使用Docker来安装。

1.1.下载镜像

方式一:在线拉取

docker pull rabbitmq:3-management

方式二:从本地加载

在课前资料已经提供了镜像包:
在这里插入图片描述

上传到虚拟机中后,使用命令加载镜像即可:

docker load -i mq.tar
安装MQ

执行下面的命令来运行MQ容器:

docker run \-e RABBITMQ_DEFAULT_USER=itcast \-e RABBITMQ_DEFAULT_PASS=123321 \--name mq \--hostname mq1 \-p 15672:15672 \-p 5672:5672 \-d \rabbitmq:3-management

SpringAMQP

在这里插入图片描述
https://spring.io/projects/spring-amqp/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

 <!--AMQP依赖,包含RabbitMQ--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>

在这里插入图片描述

spring:rabbitmq:host: 192.168.10.88 # rabbitMQ的ip地址port: 5672 # 端口username: itcastpassword: 123321virtual-host: /
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringAmqpTest {@Autowiredprivate RabbitTemplate rabbitTemplate;@Testpublic void testSendMessage2SimpleQueue(){String queueName = "simple.queue";String message = "hello, spring amqp!";rabbitTemplate.convertAndSend(queueName,message);}
}

在这里插入图片描述
在这里插入图片描述

package cn.itcast.mq.listener;import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;@Component
public class SpringRabbitListener {@RabbitListener(queues = "simple.queue")public void listenSimpleQueue(String msg){System.out.println("消费者接受到消息:[" + msg + "]");}
}

在这里插入图片描述

work Queue 工作队列

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Fanout Exchange广播模式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

@Configuration
public class FanoutConfig {// itcast.fanout@Beanpublic FanoutExchange fanoutExchange(){return new FanoutExchange("itcast.fanout");}// fanout.queue1@Beanpublic Queue fanoutQueue1(){return new Queue("fanout.queue1");}// 绑定队列1到交换机@Beanpublic Binding fanoutBinding1(Queue fanoutQueue1, FanoutExchange fanoutExchange){return BindingBuilder.bind(fanoutQueue1).to(fanoutExchange);}// fanout.queue2@Beanpublic Queue fanoutQueue2(){return new Queue("fanout.queue2");}// 绑定队列2到交换机@Beanpublic Binding fanoutBinding2(Queue fanoutQueue2, FanoutExchange fanoutExchange){return BindingBuilder.bind(fanoutQueue2).to(fanoutExchange);}}

在这里插入图片描述

   @RabbitListener(queues = "fanout.queue1")public void listenFanoutQueue1(String msg){System.out.println("消费者接受到fanoutQueue1 消息:[" + msg + "]");}@RabbitListener(queues = "fanout.queue2")public void listenFanoutQueue2(String msg){System.out.println("消费者接受到fanoutQueue2 消息:[" + msg + "]");}

在这里插入图片描述

    @Testpublic void testSendFanoutExchange(){//交换机名称String exchanneName = "itcast.fanout";//消息String message = "hello every one!";// 发送消息rabbitTemplate.convertAndSend(exchanneName,"",message);}

在这里插入图片描述

DirectExchange路由模式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

    @RabbitListener(bindings = @QueueBinding(value = @Queue(name = "direct.queue1"),exchange = @Exchange(name = "itcast.direct",type = ExchangeTypes.DIRECT),key = {"red","blue"}))public void LinstenDirectQueue1(String msg){System.out.println("消费者接受到directQueue1 消息:[" + msg + "]");}@RabbitListener(bindings = @QueueBinding(value = @Queue(name = "direct.queue2"),exchange = @Exchange(name = "itcast.direct",type = ExchangeTypes.DIRECT),key = {"red","yellow"}))public void LinstenDirectQueue2(String msg){System.out.println("消费者接受到directQueue2 消息:[" + msg + "]");}

在这里插入图片描述

    @Testpublic void testSendDirectExchange(){//交换机名称String exchanneName = "itcast.direct";//消息String message = "hello,red";// 发送消息rabbitTemplate.convertAndSend(exchanneName,"red",message);}

在这里插入图片描述

TopicExchange话题模式

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

 @RabbitListener(bindings = @QueueBinding(value = @Queue(name = "topic.queue1"),exchange = @Exchange(name = "itcast.topic",type = ExchangeTypes.TOPIC),key = "china.#"))public void LinstenTopicQueue1(String msg){System.out.println("消费者接受到topicQueue1消息:[" + msg + "]");}@RabbitListener(bindings = @QueueBinding(value = @Queue(name = "topic.queue2"),exchange = @Exchange(name = "itcast.topic",type = ExchangeTypes.TOPIC),key = "#.news"))public void LinstenTopicQueue2(String msg){System.out.println("消费者接受到topicQueue2消息:[" + msg + "]");}

在这里插入图片描述

 @Testpublic void testSendTopicExchange(){//交换机名称String exchanneName = "itcast.topic";//消息String message = "小米汽车倒闭了";// 发送消息rabbitTemplate.convertAndSend(exchanneName,"china.news",message);}

在这里插入图片描述

消息转换器

在这里插入图片描述

    @Testpublic void testSendOnjectQueue() {Map<String, Object> msg = new HashMap<>();msg.put("name","柳岩");msg.put("age",18);rabbitTemplate.convertAndSend("object.queue",msg);}

在这里插入图片描述

        <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></dependency>
 @Beanpublic MessageConverter messageConverter(){return new Jackson2JsonMessageConverter();}

在这里插入图片描述

   @RabbitListener(queues = "object.queue")public void ListenObjectQueue(Map<String,Object> msg){System.out.println("接收到object.queue的消息:" + msg);}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

将Python程序打包成exe文件

一、什么是exe可执行文件&#xff1f; **exe文件英文全名是executable file&#xff0c;翻译为可执行文件&#xff08;但它不等于可执行文件&#xff09;&#xff0c;可执行文件包含两种&#xff0c;文件扩展名为.exe的是其中的一种。exe文件可以在Windows平台上直接双击运行&a…

17. 电话号码的字母组合(回溯)

从第一个数字开始遍历其对应的字母&#xff0c;将其加入StringBuffer中&#xff0c;继续深度优先搜索&#xff0c;当访问到最后一个数字的时候&#xff0c;将StringBuffer存储到ans中&#xff0c;然后回溯到下一个对应字母。 class Solution {public List<String> lette…

Ncast盈可视高清智能录播系统busiFacade RCE漏洞(CVE-2024-0305)

产品介绍 Ncast盈可视高清智能录播系统是一套新进的音视频录制和播放系统&#xff0c;旨在提供高质量&#xff0c;高清定制的录播功能。 漏洞描述 广州盈可视电子科技有限公司的高清智能录播系统存在信息泄露漏洞(CVE-2024-0305)&#xff0c;攻击者可通过该漏洞&#xff0c;…

UC3842的内部结构和工作原理

转自&#xff1a;怀旧经典&#xff1a;电源芯片UC3842的内部结构和工作原理_手机搜狐网 UC3842&#xff0c;TL494、SG3525是非常经典的三款PWM控制芯片&#xff0c;特别是作为经典的峰值电流模式单端PWM控制器UC3842&#xff0c;早期一批做开关电源的工程师都是从这一款芯片起…

Fiddler工具 — 13.AutoResponder应用场景

简单介绍几个应用场景&#xff1a; 场景一&#xff1a;生产环境的请求重定向到本地文件&#xff0c;验证结果。 例如&#xff1a;某网站或者系统修改了问题&#xff0c;但尚未更新到生产环境&#xff0c;可重定向到本地修改后的文件进行验证&#xff0c;这样能够避免更新到生产…

互联网加竞赛 基于大数据的股票量化分析与股价预测系统

文章目录 0 前言1 课题背景2 实现效果3 设计原理QTChartsarma模型预测K-means聚类算法算法实现关键问题说明 4 部分核心代码5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于大数据的股票量化分析与股价预测系统 该项目较为新颖…

2023年全球软件质量效能大会(QECon上海站):核心内容与学习收获(附大会核心PPT下载)

会议聚焦于软件质量和效能的提升。在智能时代&#xff0c;随着数字化的深入人心&#xff0c;软件正在随着云计算、移动互联网、物联网等的发展而不断进化&#xff0c;软件对企业的发展愈加重要&#xff0c;大家对软件的质量要求也在从传统功能、性能、安全这些基础层面向着用户…

202404读书笔记|《只愿你被这世界温柔相待》——我跌落于生活的荆棘,高傲,机敏,桀骜不驯

202404读书笔记|《只愿你被这世界温柔相待》——我跌落于生活的荆棘&#xff0c;高傲&#xff0c;机敏&#xff0c;桀骜不驯 CHAPTER1 只为途中与你相见CHAPTER2 只要有爱就有痛CHAPTER3 为自己的心安一个家CHAPTER4 让往事随风 《只愿你被这世界温柔相待》作者雪莱等&#xff…

【AI视野·今日Robot 机器人论文速览 第七十二期】Mon, 8 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Mon, 8 Jan 2024 Totally 13 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Deep Reinforcement Learning for Local Path Following of an Autonomous Formula SAE Vehicle Authors Harvey Merton, Thoma…

C# 程序员如何进行职业规划?

C# 程序员如何进行职业规划&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「C#的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&…

免费学习鸿蒙(HarmonyOS)开发,一些地址分享

HarmonyOS万物互联&#xff0c;从华为一系列的操作来看已经与iOS、Android形成三足鼎立之势了。 根据《澎湃新闻》的报道&#xff0c;已有23所985高校和46所211高校加入了鸿蒙班的行列&#xff0c;合计达到了69所国内一流高校。通过鸿蒙班的设立&#xff0c;高校可以为学生提供…

Java十大经典算法——贪心算法

算法概念&#xff1a; 贪婪算法(贪心算法)是指在对问题进行求解时&#xff0c;在每一步选择中都采取最好或者最优(即最有利)的选择&#xff0c;从而希望能够导致结果是最好或者最优的算法&#xff1b;贪婪算法所得到的结果不一定是最优的结果(有时候会是最优解)&#xff0c;但…