RabbitMQ整合Spring Cloud
程序员文章站
2022-05-22 20:35:34
...
一 项目架构
二 编写生产者
1 添加依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
</dependency>
</dependencies>
2 配置文件
server:
port: 8080
spring:
application:
name: spring-msg-producer
#默认配置,可不配置
#rabbitmq:
# host: localhost
# port: 5672
# username: guest
# password: guest
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
3 新建接口
package org.crazyit.cloud;
import org.springframework.cloud.stream.annotation.Output;
import org.springframework.messaging.SubscribableChannel;
public interface SendService {
//绑定通道名
@Output("myInput")
SubscribableChannel sendOrder();
}
4 新建启动类
package org.crazyit.cloud;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.stream.annotation.EnableBinding;
@SpringBootApplication
@EnableEurekaClient
@EnableBinding(SendService.class)
public class ProducerApp {
public static void main(String[] args) {
new SpringApplicationBuilder(ProducerApp.class).run(args);
}
}
5 编写控制器,发送消息
package org.crazyit.cloud;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.integration.support.MessageBuilder;
import org.springframework.messaging.Message;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@Autowired
private SendService sendService;
@RequestMapping(value = "/send", method = RequestMethod.GET)
public String send() {
Message msg = MessageBuilder.withPayload("Hello World".getBytes()).build();
sendService.sendOrder().send(msg);
return "success";
}
}
6 启动项目
7 测试
三 编写消费者
1 添加依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
</dependency>
</dependencies>
2 编写接口
package org.crazyit.cloud;
import org.springframework.cloud.stream.annotation.Input;
import org.springframework.messaging.SubscribableChannel;
public interface ReceiveService {
//绑定通道名
@Input("myInput")
SubscribableChannel myInput();
}
3 新建启动类
package org.crazyit.cloud;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.annotation.StreamListener;
@SpringBootApplication
@EnableEurekaClient
@EnableBinding(ReceiveService.class)
public class ConsumerApp {
public static void main(String[] args) {
new SpringApplicationBuilder(ConsumerApp.class).web(true).run(args);
}
//监听消息
@StreamListener("myInput")
public void onReceive(byte[] msg) {
System.out.println("消息者1,接收到的消息:" + new String(msg));
}
}
4 启动消费者
四 测试
浏览器输入:http://localhost:8080/send
消费者控制台输出:
消息者1,接收到的消息:Hello World
推荐阅读
-
spring boot整合mybatis+mybatis-plus的示例代码
-
Spring Cloud 之 Feign.
-
基于Spring Cloud Netflix的TCC柔性事务和EDA事件驱动示例
-
微信授权就是这个原理,Spring Cloud OAuth2 授权码模式
-
spring-cloud项目搭建
-
Spring Cloud开发人员如何解决服务冲突和实例乱窜?(IP实现方案)
-
Apache shiro的简单介绍与使用教程(与spring整合使用)
-
Spring Cloud Gateway的动态路由怎样做?集成Nacos实现很简单
-
Spring Boot 2.X整合Spring-cache(让你的网站速度飞起来)
-
Spring Cloud入门程序