服务异步通讯——springcloud

这篇具有很好参考价值的文章主要介绍了服务异步通讯——springcloud。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

服务异步通讯——springcloud


服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq

初始MQ

服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq

服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq

RabbitMQ快速入门

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

单机部署

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

1.1.下载镜像

方式一:在线拉取

docker pull rabbitmq:3-management

方式二:从本地加载

在课前资料已经提供了镜像包:
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq

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

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

服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
https://spring.io/projects/spring-amqp/
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq

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

服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq

spring:
  rabbitmq:
    host: 192.168.10.88 # rabbitMQ的ip地址
    port: 5672 # 端口
    username: itcast
    password: 123321
    virtual-host: /
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringAmqpTest {


    @Autowired
    private RabbitTemplate rabbitTemplate;


    @Test
    public void testSendMessage2SimpleQueue(){
        String queueName = "simple.queue";
        String message = "hello, spring amqp!";
        rabbitTemplate.convertAndSend(queueName,message);
    }
}

服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq

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 + "]");
    }
}

服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq

work Queue 工作队列

服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq

服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq

Fanout Exchange广播模式

服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq

@Configuration
public class FanoutConfig {

    // itcast.fanout
    @Bean
    public FanoutExchange fanoutExchange(){
        return new FanoutExchange("itcast.fanout");
    }

    // fanout.queue1
    @Bean
    public Queue fanoutQueue1(){
        return new Queue("fanout.queue1");
    }


    // 绑定队列1到交换机
    @Bean
    public Binding fanoutBinding1(Queue fanoutQueue1, FanoutExchange fanoutExchange){
        return BindingBuilder
                .bind(fanoutQueue1)
                .to(fanoutExchange);
    }

    // fanout.queue2
    @Bean
    public Queue fanoutQueue2(){
        return new Queue("fanout.queue2");
    }
    // 绑定队列2到交换机
    @Bean
    public Binding fanoutBinding2(Queue fanoutQueue2, FanoutExchange fanoutExchange){
        return BindingBuilder
                .bind(fanoutQueue2)
                .to(fanoutExchange);
    }


}

服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq

   @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 + "]");
    }
    

服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq

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

服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq

DirectExchange路由模式

服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq

    @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 + "]");
    }

服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq

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

服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq

TopicExchange话题模式

服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq

服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq
服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq

 @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 + "]");
    }

服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq

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

服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq

消息转换器

服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq

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

服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq

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

服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq

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

服务异步通讯——springcloud,spring cloud,java,spring,rabbitmq文章来源地址https://www.toymoban.com/news/detail-813967.html

到了这里,关于服务异步通讯——springcloud的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java之SpringCloud Alibaba【七】【Spring Cloud微服务网关Gateway组件】

    Java之SpringCloud Alibaba【一】【Nacos一篇文章精通系列】 跳转 Java之SpringCloud Alibaba【二】【微服务调用组件Feign】 跳转 Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】 跳转 Java之SpringCloud Alibaba【四】【微服务 Sentinel服务熔断】 跳转 Java之SpringCloud Alibaba【五】【微服务

    2024年02月06日
    浏览(60)
  • 微服务SpringCloud教程——Spring Cloud是什么

    Spring Cloud 是一款基于 Spring Boot 实现的微服务框架。Spring Cloud 源自 Spring 社区,主要由 Pivotal 和 Netflix 两大公司提供技术迭代和维护。 随着微服务的火爆流行,国内外各大互联网公司都相继分享了他们在微服务架构中,针对不同场景出现的各种问题的解决方案和开源框架。

    2024年02月15日
    浏览(47)
  • SpringCloud 微服务系列——Spring Cloud Alibaba 微服务工具集

    ✅作者简介:2022年 博客新星 第八 。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:SpringCloud 微服务学习专栏 ✨特色专栏:国学周更-心性养成之路 🥭本文内容:SpringCloud 微服

    2024年02月04日
    浏览(50)
  • 【springcloud 微服务】Spring Cloud Alibaba Sentinel使用详解

    目录 一、前言 二、分布式系统遇到的问题 2.1 服务可用性问题 2.1.1  单点故障

    2024年01月16日
    浏览(48)
  • 【springcloud 微服务】Spring Cloud Alibaba Nacos使用详解

    目录 一、前言 二、nacos介绍 2.1  什么是 Nacos 2.2 nacos 核心能力 2.2.1 服务发现和服务健康监测

    2024年01月22日
    浏览(50)
  • 【springcloud 微服务】Spring Cloud Alibaba整合Sentinel详解

    目录 一、前言 二、环境准备 2.1 部署sentinel管控台 2.1.1 官网下载sentinel的jar包 2.1.2 启动控制台

    2023年04月09日
    浏览(56)
  • 【springcloud 微服务】Spring Cloud Ribbon 负载均衡使用策略详解

    目录 一、前言 二、什么是Ribbon 2.1 ribbon简介 2.1.1  ribbon在负载均衡中的角色

    2024年02月02日
    浏览(64)
  • 【SpringCloud】11、Spring Cloud Gateway使用Sentinel实现服务限流

    1、关于 Sentinel Sentinel 是阿里巴巴开源的一个流量防卫防护组件,可以为微服务架构提供强大的流量防卫能力,包括流量控制、熔断降级等功能。Spring Cloud Gateway 与 Sentinel 结合,可以实现强大的限流功能。 Sentinel 具有以下特性: 丰富的应用场景:Sentinel 承接了阿里巴巴近

    2024年02月01日
    浏览(55)
  • 【springcloud微服务】Spring Cloud Alibaba 整合dubbo与openfeign

    dubbo与springcloud都可以单独作为微服务治理框架在生产中进行使用,但使用过springcloud的同学大概了解到,springcloud生态的相关组件这些年已经逐步停更,这就导致在服务架构演进过程中的迭代断层,以至于一些新的技术组件引入困难重重,于是在国内的市场上就有了升级版的

    2024年02月07日
    浏览(61)
  • RabbitMQ基础介绍及同步通讯及异步通讯

    大多数情况下会使用同步 ,对并发没有很高的要求,但是对时效性有很高的要求, 因为我希望我查询到的信息立马就在下面的业务中用到 ,那必须得用同步调用(因为异步调用只是通知干一件事情,干完之后又不会告诉我,我们没有办法等待异步通讯的结果) 而如果说 不

    2024年02月13日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包