网站开发税目编码,延安网站建设公司,wordpress博文模板,网站建设人员工作要求写在最前
如果这个项目让你有所收获#xff0c;记得 Star 关注哦#xff0c;这对我是非常不错的鼓励与支持。
源码地址#xff08;后端#xff09;#xff1a;mingyue: #x1f389; 基于 Spring Boot、Spring Cloud Alibaba 的分布式微服务架构基础服务中心
源…写在最前
如果这个项目让你有所收获记得 Star 关注哦这对我是非常不错的鼓励与支持。
源码地址后端mingyue: 基于 Spring Boot、Spring Cloud Alibaba 的分布式微服务架构基础服务中心
源码地址前端mingyue-ui: 基于 Vue3 TS Vite Element plus 等技术适配 MingYue 后台微服务
文档地址Wiki - Gitee.com
mingyue-common-mq
添加依赖 根据需要在 mingyue-common-mq 模块中添加所需的 MQ 中间件例如RocketMQ、Kafka。 dependencies!-- RocketMQ --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-stream-rocketmq/artifactId/dependency
!-- Kafka --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-stream-kafka/artifactId/dependency
/dependencies
集成 RocketMQ
引入依赖
!-- MQ工具 --
dependencygroupIdcom.csp.mingyue/groupIdartifactIdmingyue-common-mq/artifactId
/dependency
Nacos 配置
spring:cloud:stream:function:# 重点配置 与 binding 名与消费者对应definition: rocketmqDemorocketmq:binder:# rocketmq 地址name-server: 192.168.21.32:9876bindings:rocketmqDemo-out-0:producer:# 必须得写group: defaultbindings:rocketmqDemo-out-0:content-type: application/jsondestination: stream-rocketmq-demo-topicgroup: demo-groupbinder: rocketmqrocketmqDemo-in-0:content-type: application/jsondestination: stream-rocketmq-demo-topicgroup: demo-groupbinder: rocketmq
RocketMQ 生产者
Component
public class RocketMqProducer {
Resourceprivate StreamBridge streamBridge;
public void rocketMqDemoMsg(String msg) {// 构建消息对象MqMessageDto messageDto new MqMessageDto().setMsgId(IdUtil.fastSimpleUUID()).setMsgText(msg);
streamBridge.send(rocketmqDemo-out-0, MessageBuilder.withPayload(messageDto).build());}
}
RocketMQ 消费者
Slf4j
Component
public class RocketMqConsumer {
BeanConsumerMqMessageDto rocketmqDemo() {log.info(Rocket MQ 初始化订阅);return msg - {log.info(通过 Rocket MQ 消费到消息 {}, msg.toString());};}
}
推送消息到 RocketMQ
GetMapping(/sendRocketMq)
Operation(summary 发送消息到RocketMQ, parameters { Parameter(name msg, description 推送的消息体, required true) })
public RVoid sendRocketMq(String msg) {rocketMqProducer.rocketMqDemoMsg(msg);return R.ok();
}
集成 Kafka
引入依赖
!-- MQ工具 --
dependencygroupIdcom.csp.mingyue/groupIdartifactIdmingyue-common-mq/artifactId
/dependency
Nacos 配置
spring:cloud:stream:function:# 重点配置 与 binding 名与消费者对应definition: kafkaDemokafka:binder:brokers: 192.168.21.32:9092bindings:kafkaDemo-out-0:destination: stream-kafka-demo-topiccontentType: application/jsongroup: demo-groupbinder: kafkakafkaDemo-in-0:destination: stream-kafka-demo-topiccontentType: application/jsongroup: demo-groupbinder: kafka
Kafka 生产者
Component
public class KafkaProducer {
Resourceprivate StreamBridge streamBridge;
public void kafkaDemoMsg(String msg) {// 构建消息对象MqMessageDto messageDto new MqMessageDto().setMsgId(IdUtil.fastSimpleUUID()).setMsgText(msg);
streamBridge.send(kafkaDemo-out-0, MessageBuilder.withPayload(messageDto).build());}
}
Kafka 消费者
Slf4j
Component
public class KafkaConsumer {
BeanConsumerMqMessageDto kafkaDemo() {log.info(Kafka 初始化订阅);return msg - {log.info(通过 Kafka 消费到消息 {}, msg.toString());};}
}
推送消息到 Kafka
GetMapping(/sendKafka)
Operation(summary 发送消息到Kafka, parameters { Parameter(name msg, description 推送的消息体, required true) })
public RVoid sendKafka(String msg) {kafkaProducer.kafkaDemoMsg(msg);return R.ok();
}
拓展 RabbitMQ
mingyue-common-mq 添加依赖
dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-stream-rabbit/artifactId
/dependency
Nacos 配置
--- # rabbitmq 配置
spring:rabbitmq:host: rabbitmqIpport: 5672username: rootpassword: rootcloud:stream:function:# 重点配置 与 binding 名与消费者对应definition: rabbitmqDemorabbit:bindings:rabbitmqDemo-in-0:consumer:delayedExchange: truerabbitmqDemo-out-0:producer:delayedExchange: truebindings:rabbitmqDemo-in-0:destination: delay.exchange.democontent-type: application/jsongroup: delay-groupbinder: rabbitrabbitmqDemo-out-0:destination: delay.exchange.democontent-type: application/jsongroup: delay-groupbinder: rabbit
小结
MQ 基础搭建已经完成后续会编写一些实际开发中使用到队列的场景如 订单处理 电子商务平台可以使用消息队列来处理订单确保订单的创建、支付、发货和通知等各个步骤都能按顺序和可靠地执行。 通知和提醒 网站或应用程序可以使用消息队列来发送通知和提醒如电子邮件通知、短信通知、推送通知等以便与用户互动。 用户注册和身份验证 当用户注册或请求密码重置时消息队列可以用于生成和发送验证链接或令牌确保用户身份验证的安全性和可扩展性。 数据同步 在多个系统之间同步数据以确保数据的一致性例如将用户配置信息从一个微服务同步到另一个微服务。 事件日志和审计 记录应用程序事件、用户活动和系统操作以进行审计、监视和故障排除。 批量处理 处理大量数据导入、数据清洗、ETL提取、转换、加载操作等批处理任务以提高性能和可维护性。 异步任务处理 处理后台任务如图像处理、视频编码、生成报告等以减少响应时间和提高系统的吞吐量。 队列服务 提供队列服务以支持其他应用程序或团队的异步通信需求例如云服务提供商的消息队列服务。 数据分发 将数据从生产者分发给多个消费者以实现发布-订阅模式例如新闻订阅、市场报价和天气预报。 错误处理和重试 处理意外错误和故障将失败的操作或任务放入队列以便进行重试或错误处理。
这些业务使用场景只是消息队列的一些示例。消息队列有助于提高系统的可扩展性、弹性和可靠性允许异步处理和解耦合组件从而改善了应用程序的整体性能和用户体验。不同的业务需求可能需要不同类型的消息队列系统和配置。