iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot中使用RocketMQ的示例代码
  • 915
分享到

SpringBoot中使用RocketMQ的示例代码

2024-04-02 19:04:59 915人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录1 订单微服务发送消息1.1 订单微服务添加RocketMQ的依赖1.2 添加配置1.3 编写测试代码1.4 测试2 用户微服务订阅消息2.1 用户微服务增加rocketMQ依赖

接下来我们模拟一种场景:商品下单成功之后,向下单用户发送短信。以此来示例SpringBoot中RocketMQ的使用方式。

1 订单微服务发送消息

1.1 订单微服务添加rocketmq的依赖


        <!--rocketmq-->
        <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-spring-boot-starter</artifactId>
            <version>2.1.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-client</artifactId>
            <version>4.7.1</version>
        </dependency>

1.2 添加配置


rocketmq:
  name-server: 192.168.232.129:9876 # rocketmq服务的地址
  producer:
    group: jack-producer-group  # 生产者组名

1.3 编写测试代码


package cn.jack.controller;
 
import cn.jack.domain.Order;
import cn.jack.domain.Product;
import cn.jack.service.OrderService;
import cn.jack.service.ProductService;
import com.alibaba.fastJSON.jsON;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.spring.core.RocketMQtemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.WEB.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
 
@RestController
@Slf4j
public class OrderController {
 
    @Autowired
    private RestTemplate restTemplate;
    @Autowired
    private OrderService orderService;
    @Autowired
    private DiscoveryClient discoveryClient;
    @Autowired
    private ProductService productService;
    @Autowired
    private RocketMQTemplate rocketMQTemplate;
 
    
    @RequestMapping("/order/prod/{pid}")
    public Order order(@PathVariable("pid") Long pid) {
        log.info("收到下单请求,准备查询商品信息。pid={}", pid);
 
        // 通过Feign调用商品微服务,查询商品信息
        Product product = this.productService.findByPid(pid);
        log.info("商品信息查询成功。内容为:{}", JSON.toJSONString(product));
 
        // 进行容错判断
        if (product.getPid() == -100) {
            Order order = new Order();
            order.setOid(-100L);
            order.setPname("下单失败");
            return order;
        }
 
        // 生成商品信息保存
        Order order = new Order();
        order.setNumber(1);
        order.setPid(pid);
        order.setPname(product.getPname());
        order.setPprice(product.getPprice());
        order.setUid(1);
        order.setUsername("陈家宝");
 
        this.orderService.createOrder(order);
        log.info("订单信息保存成功。内容为:{}", JSON.toJSONString(order));
 
        // TODO 下单成功之后,mq发送订单内容消息
        rocketMQTemplate.convertAndSend("jack-topic", order);
 
        return order;
    }
}

1.4 测试

访问下单接口,确认RocketMQ是否发送了消息。从RocketMQ控制台得到确认,消息发送成功。

2 用户微服务订阅消息

2.1 用户微服务增加rocketmq依赖


        <!--nacos客户端-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
 
        <!--rocketmq-->
        <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-spring-boot-starter</artifactId>
            <version>2.1.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-client</artifactId>
            <version>4.7.1</version>
        </dependency>

2.2 修改主类,启动nacos客户端


package cn.jack;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 
@SpringBootApplication
@EnableDiscoveryClient
public class UserApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserApplication.class);
    }
}

2.3 修改配置文件


rocketmq:
  name-server: 192.168.232.129:9876 # rocketmq服务的地址

2.4 编写消息接收服务


package cn.jack.service;
 
import cn.jack.domain.Order;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Service;
 
@Slf4j
@Service
@RocketMQMessageListener(consumerGroup = "jack-consumer-group", topic = "jack-topic")
public class SmsService implements RocketMQListener<Order> {
    @Override
    public void onMessage(Order order) {
        log.info("收到订单信息,内容如下:{}, 接下来进行短信发送", order);
    }
}

2.5 测试

启动用户微服务,收到了来自RocketMQ的消息。

2020-09-16 21:46:30.465 INFO [service-user,,,] 660 --- [MessageThread_2] cn.jack.service.SmsService : 收到订单信息,内容如下:Order(oid=66, uid=1, username=陈家宝, pid=2, pname=雪梨, pprice=2000.0, number=1), 接下来进行短信发送
2020-09-16 21:46:30.465 INFO [service-user,,,] 660 --- [MessageThread_1] cn.jack.service.SmsService : 收到订单信息,内容如下:Order(oid=65, uid=1, username=陈家宝, pid=3, pname=华为, pprice=8000.0, number=1), 接下来进行短信发送

消息成功消费:

到此这篇关于SpringBoot中使用RocketMQ的示例代码的文章就介绍到这了,更多相关SpringBoot使用RocketMQ内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: SpringBoot中使用RocketMQ的示例代码

本文链接: https://www.lsjlt.com/news/134589.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot中使用RocketMQ的示例代码
    目录1 订单微服务发送消息1.1 订单微服务添加rocketmq的依赖1.2 添加配置1.3 编写测试代码1.4 测试2 用户微服务订阅消息2.1 用户微服务增加rocketmq依赖...
    99+
    2022-11-12
  • golang操作rocketmq的示例代码
    RocketMQ 是什么 Github 上关于 RocketMQ 的介绍:RcoketMQ 是一款低延迟、高可靠、可伸缩、易于使用的消息中间件。具有以下特性: 支持发布/订阅(Pub...
    99+
    2022-11-13
  • springboot中使用groovy的示例代码
    目录GroovypomResourceScriptSourceDatabaseScriptSourceGroovy Groovy是一种基于Java的语法的基于JVM的编程语言。Gro...
    99+
    2022-11-13
  • springboot 使用 minio的示例代码
    什么是MinIo MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视...
    99+
    2022-11-13
  • SpringBoot使用prometheus监控的示例代码
    目录1.关于Prometheus2.有关Grafana3.SpringBoot使用Prometheus3.1 依赖内容3.2 配置文件3.3 设置application4.Prome...
    99+
    2022-11-11
  • springboot 使用mybatis查询的示例代码
    目录示例1示例2返回数据源代码示例1 项目结构 代码controller中 UserController.java package com.example.demo1110.con...
    99+
    2022-11-13
  • SpringBoot项目中使用Groovy脚本的示例代码
    目录1. 引入依赖2. 使用脚本引擎运行groovy脚本 3.思考 SpringBoot+Groovy运行动态脚本GroovyClassLoader方式 GroovyScriptEn...
    99+
    2022-11-12
  • SpringBoot使用Caffeine实现缓存的示例代码
    目录为什么要在应用程序中添加缓存在Spring Boot应用程序中实现缓存SpringBoot提供了什么缓存支持?添加生成依赖项缓存配置缓存方法结果测试缓存是否正常工作为什么缓存有时...
    99+
    2022-11-13
  • SpringBoot整合SpringDataRedis的示例代码
      本文介绍下SpringBoot如何整合SpringDataRedis框架的,SpringDataRedis具体的内容在前面已经介绍过了,可自行参考。 1....
    99+
    2022-11-12
  • SpringBoot整合jersey的示例代码
    这篇文章主要从以下几个方面来介绍。简单介绍下jersey,springboot,重点介绍如何整合springboot与jersey。 什么是jersey 什么是springboot 为什么要使用springboot+jersey 如...
    99+
    2023-05-31
    springboot jersey ers
  • SpringBoot配置Clickhouse的示例代码
    一、加入clickhouse jar包依赖 <dependency> <groupId>ru.yandex.clickhouse</g...
    99+
    2022-11-13
  • SpringBoot整合logback的示例代码
    Logback简介 1、logback和log4j是同一个作者,logback可以看作是log4j的升级版 2、logback分为三个模块, logback-core, logbac...
    99+
    2022-11-13
  • SpringBoot整合ShardingSphere的示例代码
    目录一、相关依赖二、Nacos数据源配置三、项目配置四、验证概要: ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、S...
    99+
    2022-11-12
  • springboot 整合sentinel的示例代码
    目录1. 安装sentinel2.客户端连接1. 安装sentinel         下载地址:https://github.com/ali...
    99+
    2022-11-13
  • SpringBoot整合Liquibase的示例代码
    目录整合1整合2SpringBoot整合Liquibase虽然不难但坑还是有一点的,主要集中在配置路径相关的地方,在此记录一下整合的步骤,方便以后自己再做整合时少走弯路,当然也希望能...
    99+
    2022-11-13
  • Springboot整合kafka的示例代码
    目录1.整合kafka2.消息发送2.1发送类型2.2序列化2.3分区策略3.消息消费3.1消息组别3.2位移提交1. 整合kafka 1、引入依赖 <dependency&...
    99+
    2022-11-13
  • springboot 整合hbase的示例代码
    目录前言HBase 定义HBase 数据模型物理存储结构数据模型1、Name Space2、Region3、Row4、Column5、Time Stamp6、Cell搭建步骤1、官网...
    99+
    2022-11-13
  • SpringBoot集成redis的示例代码
    目录前言一、redis是什么二、集成redis步骤三、代码演示前言 redis想必小伙伴们即使没有用过,也是经常听到的,在工作中,redis用到的频率非常高,今天详细介绍一下Spr...
    99+
    2022-11-12
  • SpringBoot整合aws的示例代码
    业务需求 将本地的一些文件保存到aws上 引入依赖 创建client 工具类 引入依赖 <dependency> ...
    99+
    2022-11-12
  • SpringBoot整合JdbcTemplate的示例代码
    目录前言初始化SpringBoot项目使用IDEA创建项目导入JDBC依赖导入数据库驱动修改配置文件数据库sys_user表结构测试类代码查询sys_user表数据量查询sys_us...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作