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

做旅游地产的网站和公司苏州优化网站公司

做旅游地产的网站和公司,苏州优化网站公司,恒锐奇 做网站,西安北郊做网站的公司集成Spring Boot和RocketMQ 在现代的微服务架构中,消息队列已经成为一种常见的异步处理模式,它能解决服务间的同步调用、耦合度高、流量高峰等问题。RocketMQ是阿里巴巴开源的一款消息中间件,性能优秀,功能齐全,被广泛…

集成Spring Boot和RocketMQ

在现代的微服务架构中,消息队列已经成为一种常见的异步处理模式,它能解决服务间的同步调用、耦合度高、流量高峰等问题。RocketMQ是阿里巴巴开源的一款消息中间件,性能优秀,功能齐全,被广泛应用在各种业务场景。

本文将详细介绍如何在Spring Boot项目中集成RocketMQ,实现消息的生产和消费。

开发环境

  • JDK 1.8 或更高
  • RocketMQ 4.8.0 或更高
  • Spring Boot 2.3.1.RELEASE 或更高
  • Maven 3.0 或更高

RocketMQ服务器部署

首先,我们需要在本地或服务器上部署RocketMQ。具体的部署步骤可以参考RocketMQ官方文档。为了简化部署,我们可以使用Docker进行部署。

Spring Boot项目创建

我们使用Spring Initializr创建一个新的Spring Boot项目,选择Web、Lombok和RocketMQ Spring Boot Starter为项目依赖。

pom.xml示例:

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.1.0</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>
</dependencies>

配置RocketMQ

application.properties文件中配置RocketMQ的服务器地址和其他相关参数。

rocketmq.name-server=127.0.0.1:9876
rocketmq.producer.group=my-group

在这里,rocketmq.name-server是RocketMQ服务器的地址,rocketmq.producer.group是生产者的组名。

消息生产者

接下来,我们创建一个消息生产者。在Spring Boot项目中,我们可以使用RocketMQTemplate来发送消息。

import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class ProducerController {@Autowiredprivate RocketMQTemplate rocketMQTemplate;@GetMapping("/send")public String send(String message) {rocketMQTemplate.convertAndSend("test-topic", message);return "Message: '" + message + "' sent.";}
}

上述代码中,我们创建了一个RESTful接口/send,当接口被调用时,它将发送一个消息到test-topic主题。

消息消费者

接下来,我们创建一个消息消费者。在Spring Boot项目中,我们可以使用@RocketMQMessageListener注解来定义一个消息消费者。

import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Service;@Service
@RocketMQMessageListener(topic = "test-topic", consumerGroup = "my-consumer_test-topic")
public class ConsumerService implements RocketMQListener<String> {@Overridepublic void onMessage(String message) {System.out.printf("------- StringConsumer received: %s \n", message);}
}

上述代码中,我们定义了一个消息消费者,它将监听test-topic主题的消息,当有新的消息时,它将打印消息内容。

测试

至此,我们已经完成了Spring Boot集成RocketMQ的所有代码。接下来,我们就可以运行Spring Boot项目,并通过访问/send接口来发送消息,查看控制台的输出来验证消息消费者是否可以正常接收消息。

这就是Spring Boot集成RocketMQ的全过程。RocketMQ作为一款功能强大的消息中间件,不仅支持基本的消息生产和消费,还支持许多高级特性,如事务消息、顺序消息、延迟消息等。在实际的项目开发中,我们可以根据业务需求选择合适的消息模型,提高系统的可用性和可靠性。

事务消息

RocketMQ支持发送事务消息,也就是说,在发送消息的同时,我们可以执行本地的数据库操作,只有当本地的数据库操作成功时,消息才会真正被发送出去。

下面是一个发送事务消息的例子:

import org.apache.rocketmq.client.producer.TransactionListener;
import org.apache.rocketmq.client.producer.TransactionMQProducer;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.concurrent.*;@RestController
public class TransactionProducerController {@Autowiredprivate RocketMQTemplate rocketMQTemplate;@GetMapping("/sendTransaction")public String sendTransaction(String message) {ExecutorService executor = new ThreadPoolExecutor(5, 10, 200, TimeUnit.MILLISECONDS,new ArrayBlockingQueue<>(5000), r -> {Thread thread = new Thread(r);thread.setName("client-transaction-msg-check-thread");return thread;});TransactionListener transactionListener = new TransactionListenerImpl();TransactionMQProducer producer = rocketMQTemplate.createAndStartTransactionMQProducer("transaction-group",transactionListener,executor);producer.sendMessageInTransaction("test-topic", "TagA", message, null);return "Transaction Message: '" + message + "' sent.";}
}

在上述代码中,我们创建了一个TransactionMQProducer,并设置了一个TransactionListener来处理事务的提交和回滚。当发送事务消息时,我们需要调用sendMessageInTransaction方法。

顺序消息

RocketMQ支持发送顺序消息,也就是说,消息会按照发送的顺序被消费。

下面是一个发送顺序消息的例子:

import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.messaging.support.MessageBuilder;@RestController
public class OrderlyProducerController {@Autowiredprivate RocketMQTemplate rocketMQTemplate;@GetMapping("/sendOrderly")public String sendOrderly(String message) {for (int i = 0; i < 100; i++) {rocketMQTemplate.syncSendOrderly("orderly_topic", MessageBuilder.withPayload(message + i).build(), "hashkey");}return "Orderly Message: '" + message + "' sent.";}
}

在上述代码中,我们调用syncSendOrderly方法发送顺序消息。该方法的第三个参数是hashkey,RocketMQ会根据这个key来决定消息发送到哪个队列,具有相同hashkey的消息会发送到同一个队列。

延迟消息

RocketMQ支持发送延迟消息,也就是说,消息不会立即被消费,而是会在指定的时间后被消费。

下面是一个发送延迟消息的例子:

import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.messaging.support.MessageBuilder;@RestController
public class DelayProducerController {@Autowiredprivate RocketMQTemplate rocketMQTemplate;@GetMapping("/sendDelay")public String sendDelay(String message) {rocketMQTemplate.syncSend("delay_topic", MessageBuilder.withPayload(message).build(), 1000, 4);return "Delay Message: '" + message + "' sent.";}
}

在上述代码中,我们调用syncSend方法发送延迟消息。该方法的第三个参数是延迟时间,第四个参数是延迟级别。

以上就是Spring Boot集成RocketMQ的详细步骤和示例代码,希望对大家有所帮助。

http://www.hkea.cn/news/15381/

相关文章:

  • 运营网站团队建设如何用百度平台营销
  • 南阳网网站建设如何做好搜索引擎优化工作
  • 服务好的徐州网站建设网址seo优化排名
  • 站长工具域名备案查询网络平台推广具体是怎么推广
  • 做网站买什么香港服务器吗如何查看网站收录情况
  • 重庆做网站及公众号公司淘宝网店怎么运营起来
  • 旅游网站规划设计腾讯企点官网下载
  • 小说网站系统怎么做百度用户服务中心电话
  • c做网站教程郑州关键词网站优化排名
  • dreawever如何做本地网站营销技巧五步推销法
  • 高安市帮助做公司网站武汉seo外包平台
  • 做阿里网站需要的faq惠州网站seo排名优化
  • 不花钱可以做网站吗长春seo网站管理
  • 专业制作网站电脑关键词排名靠前
  • 自适应网站制作教程预测2025年网络营销的发展
  • 建设网站需要什么资质竞价排名什么意思
  • 高端网站建设公司增长广西壮族自治区
  • 搜不到自己的网站搜索引擎seo优化平台
  • 网站制作比较好的公司百度注册入口
  • 湛江住房和城乡建设部网站站内营销推广方案
  • 网站打开速度加快怎么做营业推广
  • 网站开发系统调研目的客服系统网页源码2022免费
  • 免费下载素材的设计网站广东网络优化推广
  • 谁做视频网站百度网站排名规则
  • 做彩票的网站怎么创建网站快捷方式
  • 郑州做网站的公司软文文案范文
  • 网站制作工作室制作平台微信社群营销
  • 网站设计专业有哪些课程seo推广怎么样
  • 免费企业网站程序asp济南网络优化网站
  • 保山企业网站建设百度搜索链接入口