本例子采用自己发送自己消费 就没有弄多个项目了。
MQ使用的是rabbitMQ:可以用docker安装
官网文档地址:
本文档代码:springcloudstreamrabbitmq资源-Java文档类资源-优快云下载
1.pom文件项目引入项目依赖
这边展示全部的项目依赖好展示相关的版本
<properties>
<java.version>1.8</java.version>
<spring.cloud.version>2021.0.3</spring.cloud.version>
<spring.cloud.alibaba.version>2021.1</spring.cloud.alibaba.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring.cloud.alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
</dependency>
</dependencies>
2。生产者代码
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.stream.function.StreamBridge;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.stereotype.Component;
/**
* @author weida.chen@joymo.tech
* @since 2022/6/11
*/
@Component
public class Producter {
@Autowired
private StreamBridge streamBridge;
public String sendMessage(String meaasge){
streamBridge.send("demoChannel-out-0",
MessageBuilder.withPayload(meaasge).build());
return null;
}
}
3.消费者代码
import java.util.function.Consumer;
/**
* @author weida.chen@joymo.tech
* @since 2022/6/11
*/
@Service
@Slf4j
public class Listener {
/**
* demoChannel 是管道的名字
* @return
*/
@Bean
public Consumer<String> demoChannel() {
return message -> {
log.info("接收消息为:{}", message);
};
}
}
4.yaml配置
spring:
application:
name: demo
rabbitmq:
host: 192.168.116.200
port: 32688
username: admin
password: 123456
cloud:
stream:
bindings:
## 新版本固定格式 channel名字-{out/in}-{index}
demoChannel-out-0:
destination: demoExchange
contentType: application/json
demoChannel-in-0:
destination: demoExchange
contentType: application/json
server:
port: 8081
management:
endpoints:
web:
exposure:
include: "*"
这边贴上官网的解释:

项目启动之后 调用发送消息
查看rabbitMQ

控制台输出

该博客介绍了如何在Spring Boot应用中使用Spring Cloud Stream和RabbitMQ搭建消息生产者和消费者。首先,展示了项目的依赖配置,包括Spring Cloud和Spring Cloud Alibaba的版本。接着,提供了生产者组件的代码,通过StreamBridge发送消息到'demoChannel-out-0'通道。然后,给出了消费者的代码,定义了一个Consumer来接收'demoChannel-in-0'通道的消息。最后,列出了yaml配置,包括RabbitMQ的连接信息和通道配置。项目启动后,可以观察到消息的发送与接收。
https://docs.spring.io/spring-cloud-stream/docs/current/reference/html/spring-cloud-stream.html#_batch_consumers
3498





