千家信息网

消息驱动Spring Cloud Stream怎么配置

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"消息驱动Spring Cloud Stream怎么配置",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"消息驱动Spring Cloud S
千家信息网最后更新 2026年11月03日消息驱动Spring Cloud Stream怎么配置

本篇内容主要讲解"消息驱动Spring Cloud Stream怎么配置",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"消息驱动Spring Cloud Stream怎么配置"吧!

在使用spring cloud云架构的时候,我们不得不使用Spring cloud Stream,因为消息中间件的使用在项目中无处不在,我们公司后面做了娱乐方面的APP,在使用spring cloud做架构的时候,其中消息的异步通知,业务的异步处理都需要使用消息中间件机制。spring cloud的官方给出的集成建议(使用rabbit mq和kafka),我看了一下源码和配置,只要把rabbit mq集成,kafka只是换了一个pom配置jar包而已,闲话少说,我们就直接进入配置实施:

1. 简介:

Spring cloud Stream 数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。

2. 使用工具:

rabbit,具体的下载和安装细节我这里不做太多讲解,网上的实例太多了

3. 创建commonservice-mq-producer消息的发送者项目,在pom里面配置stream-rabbit的依赖

        org.springframework.cloud      spring-cloud-starter-stream-rabbit  

4. 在yml文件里面配置rabbit mq

server:    port: 5666  spring:    application:      name: commonservice-mq-producer    profiles:       active: dev    cloud:      config:        discovery:           enabled: true          service-id: commonservice-config-server    # rabbitmq和kafka都有相关配置的默认值,如果修改,可以再次进行配置      stream:        bindings:          mqScoreOutput:             destination: honghu_exchange            contentType: application/json                rabbitmq:       host: localhost       port: 5672       username: honghu       password: honghu  eureka:     client:      service-url:        defaultZone: http://honghu:123456@localhost:8761/eureka    instance:      prefer-ip-address: true

5. 定义接口ProducerService

package com.honghu.cloud.producer;    import org.springframework.cloud.stream.annotation.Output;  import org.springframework.messaging.SubscribableChannel;    public interface ProducerService {            String SCORE_OUPUT = "mqScoreOutput";            @Output(ProducerService.SCORE_OUPUT)      SubscribableChannel sendMessage();  }

6. 定义绑定

package com.honghu.cloud.producer;    import org.springframework.cloud.stream.annotation.EnableBinding;    @EnableBinding(ProducerService.class)  public class SendServerConfig {    }

7. 定义发送消息业务ProducerController

package com.honghu.cloud.controller;      import org.springframework.beans.factory.annotation.Autowired;  import org.springframework.integration.support.MessageBuilder;  import org.springframework.messaging.Message;  import org.springframework.web.bind.annotation.PathVariable;  import org.springframework.web.bind.annotation.RequestBody;  import org.springframework.web.bind.annotation.RequestMapping;  import org.springframework.web.bind.annotation.RequestMethod;  import org.springframework.web.bind.annotation.RestController;    import com.honghu.cloud.common.code.ResponseCode;  import com.honghu.cloud.common.code.ResponseVO;  import com.honghu.cloud.entity.User;  import com.honghu.cloud.producer.ProducerService;    import net.sf.json.JSONObject;    @RestController  @RequestMapping(value = "producer")  public class ProducerController {            @Autowired      private ProducerService producerService;                  /**      * 通过get方式发送对象      * @param name 路径参数      * @return 成功|失败      */      @RequestMapping(value = "/sendObj", method = RequestMethod.GET)      public ResponseVO sendObj() {          User user = new User(1, "hello User");          Message msg = MessageBuilder.withPayload(user).build();          boolean result = producerService.sendMessage().send(msg);          if(result){              return ResponseCode.buildEnumResponseVO(ResponseCode.RESPONSE_CODE_SUCCESS, false);          }          return ResponseCode.buildEnumResponseVO(ResponseCode.RESPONSE_CODE_FAILURE, false);      }                  /**      * 通过get方式发送字符串消息      * @param name 路径参数      * @return 成功|失败      */      @RequestMapping(value = "/send/{name}", method = RequestMethod.GET)      public ResponseVO send(@PathVariable(value = "name", required = true) String name) {          Message msg = MessageBuilder.withPayload(name.getBytes()).build();          boolean result = producerService.sendMessage().send(msg);          if(result){              return ResponseCode.buildEnumResponseVO(ResponseCode.RESPONSE_CODE_SUCCESS, false);          }          return ResponseCode.buildEnumResponseVO(ResponseCode.RESPONSE_CODE_FAILURE, false);      }            /**      * 通过post方式发送json对象      * @param name 路径参数      * @return 成功|失败      */      @RequestMapping(value = "/sendJsonObj", method = RequestMethod.POST)      public ResponseVO sendJsonObj(@RequestBody JSONObject jsonObj) {          Message msg = MessageBuilder.withPayload(jsonObj).build();          boolean result = producerService.sendMessage().send(msg);          if(result){              return ResponseCode.buildEnumResponseVO(ResponseCode.RESPONSE_CODE_SUCCESS, false);          }          return ResponseCode.buildEnumResponseVO(ResponseCode.RESPONSE_CODE_FAILURE, false);      }  }  

8. 创建commonservice-mq-consumer1消息的消费者项目,在pom里面配置stream-rabbit的依赖

        org.springframework.cloud      spring-cloud-starter-stream-rabbit  

9. 在yml文件中配置:

server:    port: 5111  spring:    application:      name: commonservice-mq-consumer1    profiles:       active: dev    cloud:      config:        discovery:           enabled: true          service-id: commonservice-config-server                stream:        bindings:          mqScoreInput:            group: honghu_queue            destination: honghu_exchange            contentType: application/json                rabbitmq:       host: localhost       port: 5672       username: honghu       password: honghu  eureka:     client:      service-url:        defaultZone: http://honghu:123456@localhost:8761/eureka    instance:      prefer-ip-address: true

10. 定义接口ConsumerService

package com.honghu.cloud.consumer;    import org.springframework.cloud.stream.annotation.Input;  import org.springframework.messaging.SubscribableChannel;    public interface ConsumerService {            String SCORE_INPUT = "mqScoreInput";        @Input(ConsumerService.SCORE_INPUT)      SubscribableChannel sendMessage();    }

11. 定义启动类和消息消费

package com.honghu.cloud;    import org.springframework.boot.SpringApplication;  import org.springframework.boot.autoconfigure.SpringBootApplication;  import org.springframework.cloud.netflix.eureka.EnableEurekaClient;  import org.springframework.cloud.stream.annotation.EnableBinding;  import org.springframework.cloud.stream.annotation.StreamListener;    import com.honghu.cloud.consumer.ConsumerService;  import com.honghu.cloud.entity.User;    @EnableEurekaClient  @SpringBootApplication  @EnableBinding(ConsumerService.class) //可以绑定多个接口  public class ConsumerApplication {            public static void main(String[] args) {          SpringApplication.run(ConsumerApplication.class, args);      }            @StreamListener(ConsumerService.SCORE_INPUT)      public void onMessage(Object obj) {          System.out.println("消费者1,接收到的消息:" + obj);      }    }

12. 分别启动commonservice-mq-producer、commonservice-mq-consumer1

13. 通过postman来验证消息的发送和接收

到此,相信大家对"消息驱动Spring Cloud Stream怎么配置"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

消息 配置 驱动 成功 参数 接口 方式 路径 项目 消费 业务 中间件 内容 对象 文件 时候 架构 消费者 学习 实用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网金融科技 伟宏互联网科技 湖南永感互联网科技有限公司 互联网科技深圳 腾讯阿里互联网科技 互联网科技与金融科技 银优互联网科技有限公司 盛创互联网科技有限公司 太原新华互联网科技学校怎么样 中盈科技互联网信息有限公司 银川新华互联网科技职业技术培训学校图片 湖北码尼互联网科技有限公司电话 锡山区互联网智能科技产品供应 互联网安防科技感 同城互联网络科技 北京天晋互联网科技有限公司 安徽零酒互联网科技有限公司 互联网科技博主张洲 中国主要互联网科技公司 广州全民伙伴互联网科技有限公司 新华互联网科技学校 互联网科技论文 菲比寻常互联网科技 上海卓越科技 互联网 科技与互联网的利与弊 北京华百购互联网科技有限公司 互联网科技如何创业 互联网方面的科技前沿 互联网第三次科技革命特征 互联网科技创新方面的资料
0