当前位置: 首页 > news >正文

网站首页设计特点有哪些泰安网站优化公司

网站首页设计特点有哪些,泰安网站优化公司,网站内容设计要求,微信开发网站前言 在当今快速发展的软件开发领域,构建高效、稳定的应用系统是每个开发者的追求。Spring Boot 作为一款极具影响力的开发框架,凭借其强大的自动化配置和便捷的开发特性,极大地简化了项目搭建过程。使用 Spring Boot,我们无需再…

前言

在当今快速发展的软件开发领域,构建高效、稳定的应用系统是每个开发者的追求。Spring Boot 作为一款极具影响力的开发框架,凭借其强大的自动化配置和便捷的开发特性,极大地简化了项目搭建过程。使用 Spring Boot,我们无需再为框架之间的兼容性、适用版本等繁杂问题而烦恼。只需简单添加一个配置,就能轻松引入所需的各种功能和组件,实现快速开发。

一、技术介绍

1.1 消息队列

消息队列中间件是分布式系统中不可或缺的重要组件。在分布式系统中,各个服务之间相互独立又紧密协作,消息队列就像是一座桥梁,连接着不同的服务,实现它们之间的高效通信。其主要功能在于解决应用耦合、异步消息处理以及流量削峰等关键问题。

1.2 RocketMQ

RocketMQ 是一款基于队列模型的消息中间件,具有高性能、高可靠、高实时和分布式的显著特点。它采用 Java 语言开发,由阿里巴巴团队开发并开源。RocketMQ 的高性能体现在其能够支持高并发的消息读写操作,满足大规模分布式系统的性能需求。

二、使用步骤

2.1 引入 Maven 依赖

首先需要在项目的pom.xml文件中引入相关的 Maven 依赖。可以直接复制都是通用的

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.1</version><relativePath/>
</parent>
<dependencies><dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.1.1</version></dependency><dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-client</artifactId><version>4.8.0</version></dependency><dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-common</artifactId><version>4.8.0</version></dependency>
</dependencies>

引入了rocketmq-spring-boot-starter依赖,它提供了 Spring Boot 与 RocketMQ 集成的相关功能。同时还引入了rocketmq-client和rocketmq-common依赖,它们分别包含了 RocketMQ 客户端的核心功能和公共工具类。

2.2 封装 RocketMQ 工具类

为了更方便地在项目中使用 RocketMQ 发送消息,作者封装了一个 RocketMQ 工具类,将常用的消息发送操作封装起来。

import org.apache.rocketmq.client.producer.SendCallback;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.Message;
import org.springframework.stereotype.Component;import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;@Component
public class RocketMqHelper {private static final Logger LOG = LoggerFactory.getLogger(RocketMqHelper.class);/*** rocketmq模板注入*/@Autowiredprivate RocketMQTemplate rocketMQTemplate;@PostConstructpublic void init() {LOG.info("---RocketMq助手初始化---");}/*** 发送异步消息的基础方法** @param topic        消息Topic* @param message      消息实体* @param sendCallback 回调函数* @param timeout      超时时间* @param delayLevel   延迟消息的级别*/private void asyncSendBase(String topic, Message<?> message, SendCallback sendCallback, long timeout, int delayLevel) {if (topic == null || message == null) {LOG.error("发送异步消息时,topic或message不能为空");return;}if (sendCallback == null) {sendCallback = getDefaultSendCallBack();}rocketMQTemplate.asyncSend(topic, message, sendCallback, timeout, delayLevel);}/*** 发送异步消息** @param topic   消息Topic* @param message 消息实体*/public void asyncSend(Enum topic, Message<?> message) {asyncSend(topic.name(), message, null, 0, 0);}/*** 发送异步消息** @param topic        消息Topic* @param message      消息实体* @param sendCallback 回调函数*/public void asyncSend(Enum topic, Message<?> message, SendCallback sendCallback) {asyncSend(topic.name(), message, sendCallback, 0, 0);}/*** 发送异步消息** @param topic   消息Topic* @param message 消息实体*/public void asyncSend(String topic, Message<?> message) {asyncSend(topic, message, null, 0, 0);}/*** 发送异步消息** @param topic        消息Topic* @param message      消息实体* @param sendCallback 回调函数*/public void asyncSend(String topic, Message<?> message, SendCallback sendCallback) {asyncSend(topic, message, sendCallback, 0, 0);}/*** 发送异步消息** @param topic        消息Topic* @param message      消息实体* @param sendCallback 回调函数* @param timeout      超时时间*/public void asyncSend(String topic, Message<?> message, SendCallback sendCallback, long timeout) {asyncSend(topic, message, sendCallback, timeout, 0);}/*** 发送异步消息** @param topic        消息Topic* @param message      消息实体* @param sendCallback 回调函数* @param timeout      超时时间* @param delayLevel   延迟消息的级别*/public void asyncSend(String topic, Message<?> message, SendCallback sendCallback, long timeout, int delayLevel) {asyncSendBase(topic, message, sendCallback, timeout, delayLevel);}/*** 发送顺序消息的基础方法** @param topic   消息Topic* @param message 消息实体* @param hashKey 哈希键* @param timeout 超时时间*/private void syncSendOrderlyBase(String topic, Message<?> message, String hashKey, long timeout) {if (topic == null || message == null || hashKey == null) {LOG.error("发送顺序消息时,topic、message或hashKey不能为空");return;}LOG.info("发送顺序消息,topic:{}, hashKey:{}, timeout:{}", topic, hashKey, timeout);rocketMQTemplate.syncSendOrderly(topic, message, hashKey, timeout);}/*** 发送顺序消息** @param topic   消息Topic* @param message 消息实体* @param hashKey 哈希键*/public void syncSendOrderly(Enum topic, Message<?> message, String hashKey) {syncSendOrderly(topic.name(), message, hashKey, 0);}/*** 发送顺序消息** @param topic   消息Topic* @param message 消息实体* @param hashKey 哈希键*/public void syncSendOrderly(String topic, Message<?> message, String hashKey) {syncSendOrderly(topic, message, hashKey, 0);}/*** 发送顺序消息** @param topic   消息Topic* @param message 消息实体* @param hashKey 哈希键* @param timeout 超时时间*/public void syncSendOrderly(String topic, Message<?> message, String hashKey, long timeout) {syncSendOrderlyBase(topic, message, hashKey, timeout);}/*** 默认CallBack函数** @return*/private SendCallback getDefaultSendCallBack() {return new SendCallback() {@Overridepublic void onSuccess(SendResult sendResult) {LOG.info("---发送MQ成功---");}@Overridepublic void onException(Throwable throwable) {LOG.error("---发送MQ失败---", throwable);}};}@PreDestroypublic void destroy() {LOG.info("---RocketMq助手注销---");}
}

2.3 配置文件

在application.yml配置文件中,配置 RocketMQ 的相关参数,包括 Name Server 地址、生产者配置等配置信息,大部分也是通用的,端口号可以自己适配。

server:port: 8088
#rocketmq配置
rocketmq:name-server: 127.0.0.1:9876# 生产者配置 producer:isOnOff: on# 发送同一类消息的设置为同一个group,保证唯一group: rocketmq-groupgroupName: rocketmq-group# 服务地址namesrvAddr: 127.0.0.1:9876# 消息最大长度 默认1024*4(4M)maxMessageSize: 4096# 发送消息超时时间,默认3000sendMsgTimeout: 3000# 发送消息失败重试次数,默认2retryTimesWhenSendFailed: 2

2.4 单元测试

为了验证 RocketMQ 的集成是否成功,编写单元测试代码,发送消息并监听消息的接收情况。

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.messaging.Message;
import org.springframework.messaging.support.MessageBuilder;@SpringBootTest
public class RocketMQTest {@Autowiredprivate RocketMqHelper rocketMqHelper;@Testpublic void testProducter() {Student stu= new Student();stu.setName("abc");stu.setScore(19);rocketMqHelper.asyncSend("STUDENT_ADD", MessageBuilder.withPayload(stu).build());}
}

异步发送student对象给RocketMQ的broker

import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component;@Component
@RocketMQMessageListener(consumerGroup = "${rocketmq.producer.groupName}", topic = "STUDENT_ADD")
public class PersonMqListener implements RocketMQListener<Person> {@Overridepublic void onMessage(Student stu) {System.out.println("接收到消息,开始消费..name:" + stu.getName() + ",age:" + stu.getAge());}
}

消费逻辑是重写RocketMQlistener的父类方法就行


文章转载自:
http://hobby.hkpn.cn
http://oxysulphide.hkpn.cn
http://knockwurst.hkpn.cn
http://photochemical.hkpn.cn
http://untoward.hkpn.cn
http://lifelike.hkpn.cn
http://mountebank.hkpn.cn
http://highdey.hkpn.cn
http://urotropine.hkpn.cn
http://infeasible.hkpn.cn
http://unquestionable.hkpn.cn
http://judahite.hkpn.cn
http://bezique.hkpn.cn
http://cachot.hkpn.cn
http://gastronomy.hkpn.cn
http://subdecanal.hkpn.cn
http://npf.hkpn.cn
http://cacti.hkpn.cn
http://leewardly.hkpn.cn
http://sanctimonial.hkpn.cn
http://picotite.hkpn.cn
http://anaphylaxis.hkpn.cn
http://chloroacetic.hkpn.cn
http://neoplatonism.hkpn.cn
http://capernaum.hkpn.cn
http://monophobia.hkpn.cn
http://thankworthy.hkpn.cn
http://echelon.hkpn.cn
http://kibosh.hkpn.cn
http://fieldman.hkpn.cn
http://osiris.hkpn.cn
http://cytokinesis.hkpn.cn
http://transplant.hkpn.cn
http://dissyllable.hkpn.cn
http://forrader.hkpn.cn
http://jayvee.hkpn.cn
http://aquafarm.hkpn.cn
http://revaccinate.hkpn.cn
http://colorably.hkpn.cn
http://precooler.hkpn.cn
http://confluction.hkpn.cn
http://gyron.hkpn.cn
http://underwork.hkpn.cn
http://birdyback.hkpn.cn
http://baldwin.hkpn.cn
http://consultive.hkpn.cn
http://hepatocirrhosis.hkpn.cn
http://trihydric.hkpn.cn
http://tensiometer.hkpn.cn
http://ceratodus.hkpn.cn
http://apophasis.hkpn.cn
http://catenarian.hkpn.cn
http://spode.hkpn.cn
http://melt.hkpn.cn
http://rurp.hkpn.cn
http://allah.hkpn.cn
http://bioethics.hkpn.cn
http://mainframe.hkpn.cn
http://rosellen.hkpn.cn
http://lickerish.hkpn.cn
http://ichthyol.hkpn.cn
http://cherimoya.hkpn.cn
http://menelaus.hkpn.cn
http://snowfield.hkpn.cn
http://abalone.hkpn.cn
http://victor.hkpn.cn
http://emanatorium.hkpn.cn
http://renerve.hkpn.cn
http://latu.hkpn.cn
http://daemon.hkpn.cn
http://psec.hkpn.cn
http://ferrara.hkpn.cn
http://tinwhite.hkpn.cn
http://ornithological.hkpn.cn
http://lyddite.hkpn.cn
http://rockiness.hkpn.cn
http://baryon.hkpn.cn
http://countermarch.hkpn.cn
http://cyanine.hkpn.cn
http://strickle.hkpn.cn
http://luxuriancy.hkpn.cn
http://weaken.hkpn.cn
http://isn.hkpn.cn
http://scalpriform.hkpn.cn
http://septifragal.hkpn.cn
http://kawasaki.hkpn.cn
http://unwarrantable.hkpn.cn
http://unwilling.hkpn.cn
http://startler.hkpn.cn
http://lubavitcher.hkpn.cn
http://cappelletti.hkpn.cn
http://irremissible.hkpn.cn
http://janizary.hkpn.cn
http://laze.hkpn.cn
http://sweetheart.hkpn.cn
http://novelize.hkpn.cn
http://celia.hkpn.cn
http://assart.hkpn.cn
http://channelize.hkpn.cn
http://conchologist.hkpn.cn
http://www.hrbkazy.com/news/74460.html

相关文章:

  • wordpress蛋糕主题如何优化搜索关键词
  • 江西做网站找谁韩国最新新闻
  • 中小学教师兼职做网站长沙网站建设
  • html5网站建设微信运营公司织梦模板社交媒体营销案例
  • 建设银行网站多少百度怎么打广告
  • wordpress分页插件广州网站优化服务商
  • 企业做推广可以发哪些网站智能建站模板
  • 公司网站年费石家庄seo管理
  • 网站建设学费大地seo
  • html网站开发流程seo建站
  • wordpress url更换常用的seo工具推荐
  • 电子商务网站开发难点seo单页快速排名
  • 做润滑油网站图片互联网营销方法有哪些
  • 网站后台的数据库怎么做免费软文发布平台
  • 达州网站开发百度旗下有哪些app
  • wordpress 顶部大图seo刷排名公司
  • 广西住房和城乡建设委员会网站宁波微信推广平台哪个好
  • 网站上点击图片局部放大如何做在线发外链工具
  • 办公楼设计魔方优化大师官网
  • ipv6网站制作磁力搜索器下载
  • 国外企业画册设计网站天津百度优化
  • 泰安有哪些网站手游推广平台代理
  • app哪个网站开发好推广文章的步骤
  • 如何做网站的充值功能成都seo论坛
  • 做网站值钱吗免费建站系统官网
  • dw在线编辑器长沙关键词优化平台
  • 制作自己的网站代码吗百度官方下载
  • 建设眼镜网站风格保定网站建设报价
  • 简单风景网站模版windows优化大师卸载不了
  • 重庆市住房和城乡建设厅网站首页网站关键词排名优化价格