在线A视频网站(级做爰片),徐州关键词排名优化,缪斯设计上海,永久3e39cosvv457Spring Cloud Stream整合RocketMQ 这里书接上回#xff0c;默认你已经搭建好了RocketMQ主从异步集群#xff0c;前面文章已经介绍过搭建方法。 1、Spring Cloud Stream介绍
Spring Cloud Stream是一个框架#xff0c;用于构建与共享消息系统连接的高度可扩展的事件驱动微服…Spring Cloud Stream整合RocketMQ 这里书接上回默认你已经搭建好了RocketMQ主从异步集群前面文章已经介绍过搭建方法。 1、Spring Cloud Stream介绍
Spring Cloud Stream是一个框架用于构建与共享消息系统连接的高度可扩展的事件驱动微服务。
官网https://spring.io/projects/spring-cloud-stream 该框架提供了一个灵活的编程模型该模型基于已经建立和熟悉的Spring习惯用法和最佳实践包括对持久pub/sub语义、消费者组和有状态分区的支持。 Spring Cloud Stream的核心构建块是
Destination Binders:负责提供与外部消息传递系统集成的组件。Destination Bindings:外部消息系统和最终用户提供的应用程序代码(生产者/消费者)之间的桥梁。Message:生产者和消费者用来与目标绑定器(以及通过外部消息系统的其他应用程序)进行通信的规范数据结构。
2、生产者
2.1 引入依赖
dependenciesdependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion${spring-cloud-alibaba.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-stream-rocketmq/artifactIdversion2.2.2.RELEASE/versionexclusionsexclusiongroupIdorg.apache.rocketmq/groupIdartifactIdrocketmq-client/artifactId/exclusionexclusiongroupIdorg.apache.rocketmq/groupIdartifactIdrocketmq-acl/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.apache.rocketmq/groupIdartifactIdrocketmq-client/artifactIdversion4.7.1/version/dependencydependencygroupIdorg.apache.rocketmq/groupIdartifactIdrocketmq-acl/artifactIdversion4.7.1/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependencies注意RocketMQ官方维护的Spring-Cloud-Stream依赖中的rocketmq版本为4.4需要排出后加入4.7.1的依。 2.2 编写配置文件
spring:application:name: my-spring-cloud-rocketmq-producercloud:stream:bindings:output:destination: TopicTestrocketmq:binder:name-server: 192.168.159.34:9876
server:port: 80802.3 启动类打上注解
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.messaging.Source;EnableBinding(Source.class)
SpringBootApplication
public class MySpringCloudRocketmqProducerApplication {public static void main(String[] args) {SpringApplication.run(MySpringCloudRocketmqProducerApplication.class, args);}
}其中EnableBinding(Source.class)指向配置文件的output参数。
2.4 编写生产者程序
import org.apache.rocketmq.common.message.MessageConst;
import org.springframework.cloud.stream.messaging.Source;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageHeaders;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.stereotype.Component;import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;Component
public class MyProducer {Resourceprivate Source source;public void sendMessage(String msg){//封装消息头MapString,Object headersnew HashMap();headers.put(MessageConst.PROPERTY_TAGS,TagA);MessageHeaders messageHeadersnew MessageHeaders(headers);//创建消息对象MessageString message MessageBuilder.createMessage(msg, messageHeaders);//发送消息source.output().send(message);}
}2.5 编写单元测试发送消息
SpringBootTest
class MySpringCloudRocketmqProducerApplicationTests {Autowiredprivate MyProducer producer;Testvoid contextLoads() {producer.sendMessage(hello,spring cloud stream message);}}3、消费者
3.1 引入依赖
与生产者相同。
3.2 编写配置文件
spring:application:name: my-spring-cloud-rocketmq-consumercloud:stream:bindings:# input消费者input:destination: TopicTestgroup: spring-cloud-stream-consumer-group# 配置RocketMQrocketmq:binder:name-server: 192.168.159.34:9876
server:port: 80813.3 启动类打上注解
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.messaging.Sink;EnableBinding(Sink.class)
SpringBootApplication
public class MySpringCloudRocketmqConsumerApplication {public static void main(String[] args) {SpringApplication.run(MySpringCloudRocketmqConsumerApplication.class, args);}}其中EnableBinding(Sink.class)指向配置文件的input参数。
3.4 编写消费者程序
import org.springframework.cloud.stream.annotation.StreamListener;
import org.springframework.cloud.stream.messaging.Sink;
import org.springframework.stereotype.Component;Component
public class MyConsumer {StreamListener(Sink.INPUT)public void processMessage(String message){System.out.println(收到的消息message);}
}先启动消费者使用单元测试发送消息。