当前位置: 首页 > java >正文

SpringCloud系列(50)--SpringCloud Stream消息驱动之实现消费者

前言:在上一节中我们实现了SpringCloud Stream消息驱动里的生产者,而本节内容则是关于SpringCloud Stream消息驱动里消费者的实现

1、创建一个消费者模块,命为cloud-stream-rabbitmq-consumer8802
(1)在父工程下新建模块

 (2)选择模块的项目类型为Maven并选择模块要使用的JDK版本

(3)填写子模块的名称,然后点完成即可完成创建

效果图:

(4)修改cloud-stream-rabbitmq-consumer8802子模块的pom.xml文件,然后reolad一下,下载依赖

例:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>springcloud01</artifactId><groupId>com.ken.springcloud</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>cloud-stream-rabbitmq-consumer8802</artifactId><dependencies><!--以下依赖都没写版本号,没写版本号的情况下会引用父项目的版本--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--监控--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--Eureka Clinet--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-stream-rabbit</artifactId></dependency><!--热部署--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><!--lombok插件--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>
</project>
(5)为子模块添加名为application的yml配置文件

效果图:

(6)修改application.yml文件配置(注:因为当前实现的是消费者,所以spring.cloud.stream.bindings下要写成input,表示当前是消费者)
server:port: 8802spring:application:name: cloud-stream-consumercloud:stream:#在此处配置要绑定的rabbitmq的服务信息binders:#表示定义的名称,用于于binding整合defaultRabbit:#消息组件类型,表示用到的组件是rabbittype: rabbit#设置rabbitmq的相关的环境配置environment:spring:rabbitmq:host: localhostport: 5672username: guestpassword: guest#服务的整合处理bindings:#这个名字是一个通道的名称input:#表示要使用的Exchange名称定义destination: studyExchange#设置消息类型,本次为json,文本则设置"text/plain"content-type: application/json#设置要绑定的消息服务的具体设置binder: defaultRabbiteureka:#客户端进行Eureka注册的配置client:service-url:defaultZone: http://localhost:7001/eurekainstance:#设置心跳的时间间隔(默认是30秒)lease-renewal-interval-in-seconds: 2#如果现在超过了5秒的间隔(默认是90秒)lease-expiration-duration-in-seconds: 5#在信息列表时显示主机名称instance-id: receive-8002.com#访问的路径变为IP地址prefer-ip-address: true
(7)为cloud-stream-rabbitmq-consumer8802子模块新建一个主启动类,类名输入com.ken.springcloud.StreamMQMain8802,然后创建即可

效果图:

(8)编写StreamMQMain8802主启动类
package com.ken.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class StreamMQMain8802 {public static void main(String[] args) {SpringApplication.run(StreamMQMain8802.class, args);}
}

2、在com.ken.springcloud包下新建一个名为controller的包

效果图:

3、在controller包下新建一个名为ReceiveMessageListencerController的控制类

效果图:

4、编写ReceiveMessageListencerController类
package com.ken.springcloud.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.annotation.StreamListener;
import org.springframework.cloud.stream.messaging.Sink;
import org.springframework.messaging.Message;
import org.springframework.stereotype.Component;@Component
@EnableBinding(Sink.class)
public class ReceiveMessageListencerController {@Value("${server.port}")private String serverPort;@StreamListener(Sink.INPUT)public void input(Message<String> message) {System.out.println("消费者1号--->接受到的消息:" + message.getPayload() + "\t port:" + serverPort);}}

5、分别启动eureka-server7001、RabbitMQ、cloud-stream-rabbitmq-provider8801、cloud-stream-rabbitmq-consumer8802
(1)启动eureka-server7001、cloud-stream-rabbitmq-provider8801、cloud-stream-rabbitmq-consumer8802

效果图:

 (2)启动RabbitMQ

效果图:

6、查看RabbitMQ是否正常运行

在浏览器输入http://localhost:15672/进入RabbitMQ的可视化界面,然后登录进去(默认账号密码guest/guest)

效果图:

7、在浏览器地址栏输入http://localhost:8801/sendMessage接口,然后按回车发起请求

效果图:

 点进studuExchange交换机里

可以看到有波动,证明我们的消息通过消息发送者成功的发送进了studyExchange交换机

分别查看cloud-stream-rabbitmq-provider8801、cloud-stream-rabbitmq-consumer8802的控制台输出信息

cloud-stream-rabbitmq-provider8801:

cloud-stream-rabbitmq-consumer8802:

由上述可以看出生产者成功往队列里发送了消息,而消费者则成功的消费了生产者发出来的消息

http://www.xdnf.cn/news/14836.html

相关文章:

  • Python Async/Await 异步编程详解
  • <script setup>中的setup作用以及和不带的区别对比
  • 【UnityAssetBundle】异步加载
  • 【ESP32-IDF笔记】09-UART配置和使用
  • 基于大模型的领域知识图谱构建--python语言实现
  • Qt处理USB摄像头开发说明与QtMultimedia与V4L2融合应用
  • 二叉树题解——二叉搜索树中第 K 小的元素【LeetCode】使用外部变量ans记录答案
  • MyChrome.exe与Selenium联动避坑指南:User Data目录冲突解决方案
  • 60天python训练营打卡day52
  • Python gmssl.SM4使用案例
  • 动手学深度学习-学习笔记(总)
  • IDEA中application.yml配置文件不自动提示解决办法
  • 运算方法和运算器补充
  • 【AI大模型面试八股文】大模型训练中如何应对灾难性遗忘问题?
  • Swagger 安装使用教程
  • RabbitMQ 4.1.1初体验
  • 一个简单的分布式追踪系统
  • 区块链技术在物联网(IoT)中的核心应用场景
  • 利用TCP协议,创建一个多人聊天室
  • 图灵完备之路(数电学习三分钟)----数据选择器与总线
  • 本地区块链服务在物联网中的应用实例
  • python打卡day58@浙大疏锦行
  • 暴雨服务器成功中标华中科技大学集成电路学院服务器采购项目
  • JAVA-springboot 整合Redis
  • Go中使用国家新闻出版署实名认证
  • 【ACP】阿里云云计算高级运维工程师--ACP
  • 硬件嵌入式学习路线大总结(一):C语言与linux。内功心法——从入门到精通,彻底打通你的任督二脉!
  • Docker Desktop 安装到D盘(包括镜像下载等)+ 汉化
  • 7.4_面试_JAVA_
  • css-多条记录,自动换行与自动并行布局及gap兼容