深圳建外贸网站,html5旅游网站,宿迁大型三合一网站开发,织梦英文版网站怎么做1 简介 了解过RabbitMQ后#xff0c;可能我们会遇到不同的系统在用不同的队列。比如系统A用的Kafka#xff0c;系统B用的RabbitMQ#xff0c;但是没了解过Kafka#xff0c;因此可以使用Spring Stream#xff0c;它能够屏蔽地产#xff0c;像JDBC一样#xff0c;只关心SQ…1 简介 了解过RabbitMQ后可能我们会遇到不同的系统在用不同的队列。比如系统A用的Kafka系统B用的RabbitMQ但是没了解过Kafka因此可以使用Spring Stream它能够屏蔽地产像JDBC一样只关心SQL和业务本身不关心数据库的具体实现。 创建一个新的项目测试 导入SpringCloud依赖 dependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion2021.0.1/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagement新建两个模块一个生产者一个消费者 给两个模块导入依赖
dependencies!-- RabbitMQ的Stream实现 --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-stream-rabbit/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency
/dependencies1.1 编写生产者
首先是配置文件
server:port: 8001
spring:cloud:stream:binders: #此处配置要绑定的rabbitmq的服务信息local-server: #绑定名称随便起一个就行type: rabbit #消息组件类型这里使用的是RabbitMQ就填写rabbitenvironment: #服务器相关信息按照下面的方式填写就行爆红别管spring:rabbitmq:host: 8.130.172.119port: 5672username: adminpassword: passwordvirtual-host: /bindings:test-out-0:destination: test.exchange然后编写controller访问一次接口就向消息队列发送一个数据
RestController
public class PublishController {ResourceStreamBridge bridge; //通过bridge来发送消息RequestMapping(/publish)public String publish(){//第一个参数其实就是RabbitMQ的交换机名称数据会发送给这个交换机到达哪个消息队列不由我们决定//这个交换机的命名稍微有一些规则://输入: 名称 -in- index//输出: 名称 -out- index//这里我们使用输出的方式来将数据发送到消息队列注意这里的名称会和之后的消费者Bean名称进行对应bridge.send(test-out-0, HelloWorld!);return 消息发送成功new Date();}
}这里生产者就完成了
1.2 消费者
编写配置文件 因为消费者是输入默认名称为 方法名-in-index这里我们将其指定为我们刚刚定义的交换机 消费者启动类 直接定义一个consumer类型的bean即可
Component
public class ConsumerComponent {Bean(test) //注意这里需要填写我们前面交换机名称中名称这样生产者发送的数据才会正确到达public ConsumerString consumer(){return System.out::println;}
}此时消费者就编写完成
1.3 启动测试
启动两个服务
访问controller 消费者接收到消息 这样就通过SpringCloud Stream屏蔽掉底层RabbitMQ来直接进行消息的操作了