本例子采用自己发送自己消费 就没有弄多个项目了。
MQ使用的是rabbitMQ:可以用docker安装
官网文档地址:
本文档代码:springcloudstreamrabbitmq资源-Java文档类资源-CSDN下载
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
控制台输出