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

东阳高端营销型网站建设品牌茌平网站开发

东阳高端营销型网站建设品牌,茌平网站开发,wordpress 建站插件,常见的网络营销平台有哪些SpringBoot 整合RabbitMq 自定义消息监听容器来实现消息批量处理前言添加依赖配置文件编写监听器创建SimpleRabbitListenerContainerFactory发送消息前言 RabbitMQ是一种常用的消息队列#xff0c;Spring Boot对其进行了深度的整合#xff0c;可以快速地实现消息的发送和接收… SpringBoot 整合RabbitMq 自定义消息监听容器来实现消息批量处理前言添加依赖配置文件编写监听器创建SimpleRabbitListenerContainerFactory发送消息前言 RabbitMQ是一种常用的消息队列Spring Boot对其进行了深度的整合可以快速地实现消息的发送和接收。在RabbitMQ中消息的发送和接收都是异步的因此需要使用监听器来监听消息的到来。Spring Boot中提供了默认的监听器容器但是有时候我们需要自定义监听器容器来满足一些特殊的需求比如批量获取数据。 在本文中我们将使用Spring Boot来整合RabbitMQ并自定义一个监听器容器实现批量获取数据的功能。 前置条件 在开始之前您需要具备以下条件 已经安装好RabbitMQ服务器并启动。已经创建好要使用的队列。已经熟悉了Spring Boot和RabbitMQ的基本知识。 环境准备 在开始之前我们需要准备好以下环境 JDK 1.8或以上版本Spring Boot 2.5.0或以上版本RabbitMQ 3.8.0或以上版本 添加依赖 首先在pom.xml文件中添加以下依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-amqp/artifactId /dependency配置文件 接下来在application.properties文件中添加以下配置 spring.rabbitmq.hostlocalhost spring.rabbitmq.port5672 spring.rabbitmq.usernameguest spring.rabbitmq.passwordguest spring.rabbitmq.virtual-host/# 队列名称 spring.rabbitmq.listener.simple.queue-namemyQueue# 最大并发消费者数量 spring.rabbitmq.listener.simple.concurrency5# 最小数量 spring.rabbitmq.listener.simple.min-concurrency1# 最大数量 spring.rabbitmq.listener.simple.max-concurrency10# 批量处理消息的大小 spring.rabbitmq.listener.simple.batch-size50或 spring:rabbitmq:host: localhostlistener:simple:batch-size: 50concurrency: 5max-concurrency: 10min-concurrency: 1queue-name: myQueuepassword: guestport: 5672username: guestvirtual-host: /编写监听器 然后我们需要创建一个监听器类以便处理从队列中接收到的消息。以下是一个简单的示例 Component public class MyListener {RabbitListener(queues myQueue, containerFactory myFactory)public void handleMessage(ListMyMessage messages, Channel channel, Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag)throws IOException {try {// 处理消息System.out.println(Received messages.size() messages);for (Message message : messages) {// 处理消息System.out.println(Received message: new String(message.getBody()));}channel.basicAck(messages.get(messages.size() - 1).getMessageProperties().getDeliveryTag(), true);} finally {// 手动确认消息channel.basicAck(deliveryTag, true);}} }在上面的代码中我们使用了RabbitListener注解来指定要监听的队列名称同时也指定了使用myFactory工厂来创建监听容器。在这个监听器中我们简单地打印了接收到的消息。 创建SimpleRabbitListenerContainerFactory 接下来我们需要创建一个SimpleRabbitListenerContainerFactory工厂以便能够自定义监听容器的行为。以下是一个简单的示例 Configuration public class RabbitMQConfig {// Bean // public SimpleRabbitListenerContainerFactory myFactory(ConnectionFactory connectionFactory) { // SimpleRabbitListenerContainerFactory factory new SimpleRabbitListenerContainerFactory(); // factory.setConnectionFactory(connectionFactory); // factory.setConcurrentConsumers(1); // factory.setMaxConcurrentConsumers(10); // factory.setBatchListener(true); // factory.setBatchSize(50); // return factory; // }Beanpublic SimpleRabbitListenerContainerFactory myFactory(ConnectionFactory connectionFactory,PlatformTransactionManager transactionManager,MessageConverter messageConverter) {SimpleRabbitListenerContainerFactory factory new SimpleRabbitListenerContainerFactory();// 并发消费者数默认为 1factory.setConcurrentConsumers(5);// 最大并发消费者数默认为 1factory.setMaxConcurrentConsumers(10);// 拒绝未确认的消息并重新将它们放回队列默认为 truefactory.setDefaultRequeueRejected(false);// 容器启动时是否自动启动默认为 truefactory.setAutoStartup(true);// 消息确认模式默认为 AUTOfactory.setAcknowledgeMode(AcknowledgeMode.MANUAL);// 每个消费者在一次请求中预获取的消息数默认为 1factory.setPrefetchCount(5);// 从队列中接收消息的超时时间默认为 0表示没有超时限制factory.setReceiveTimeout(1000);// 与容器一起使用的事务管理器。默认情况下容器不会使用事务factory.setTransactionManager(transactionManager);// 消息转换器用于将接收到的消息转换为 Java 对象或将 Java 对象转换为消息factory.setMessageConverter(messageConverter);// 用于异步消息处理的线程池。默认情况下容器使用一个简单的 SimpleAsyncTaskExecutorfactory.setTaskExecutor(new SimpleAsyncTaskExecutor());// 在关闭容器时等待活动线程终止的时间默认为 5000 毫秒factory.setShutdownTimeout(10000);// 重试失败的消息之前等待的时间默认为 5000 毫秒factory.setRecoveryInterval(5000);// 如果消息处理器尝试监听不存在的队列是否抛出异常。默认为 truefactory.setMissingQueuesFatal(false);// 监听器容器连接工厂factory.setConnectionFactory(connectionFactory);return factory;} }这些属性中的大多数都是可选的可以根据需要进行设置。根据应用程序的需求我们可以自由地调整这些属性以提高应用程序的性能和可靠性。 发送消息 最后我们可以编写一个简单的发送消息的代码来向队列中发送一些消息。以下是一个简单的示例 Component public class MySender {Autowiredprivate RabbitTemplate rabbitTemplate;public void sendMessage(String message) {for (int i 0; i 100; i) {rabbitTemplate.convertAndSend(myQueue, message i);}} }总之 SimpleRabbitListenerContainerFactory 提供了一个灵活而强大的机制用于自定义和配置 RabbitMQ 消息监听容器。
http://www.hkea.cn/news/14517349/

相关文章:

  • 佛山技术支持 骏域网站建设一级a做爰片软件网站
  • 蓟门桥网站建设项目管理系统平台
  • 怎么把自己网站推广出去wordpress 后台栏目
  • 上海做家纺的公司网站百度关键词优化工具是什么
  • 花的网站建设规划书cpa广告联盟网站建设教程
  • 华夏名网网站建设教程wordpress相册打造的视频弹出
  • 衡水做网站建设公司网站服务运营队伍与渠道建设
  • 长春网站制作最新招聘信息优秀的网站建设推荐
  • 企业网站空间域名带前台的WordPress模板
  • 主播网站建设公司网站建设应符合哪些法规
  • wordpress多站点是什么wordpress解析插件
  • php 视频播放网站开发网站建设 首选百川互动
  • 织梦网站地图html怎么做订单网站模块
  • 单页营销型网站模板市场监督管理局待遇如何
  • 天津网站建设举措做什么网站能吸引流量
  • python在线网站自己开发游戏需要学什么
  • 如何避免网站被耍流量附近计算机培训班咨询
  • 郑州 做网站哈尔滨建站平台详细解读
  • 黄页网页的推广网站个人网站做外链方法
  • 学习建网站玩网站建设学习wordpress 编辑器字体
  • 网站开发人员的行业分析aspnet网站开发例题
  • 广州网站排名怎样开发一个app软件
  • 广州做网站海珠新科怀化建设企业网站
  • qingdao城乡住房建设厅网站网站建设与管理领导小组
  • 手机网站建设图片百度申请微信号免费注册
  • 聊城做网站的公司案例wordpress如何关闭主题
  • 做网站 注意朔州做网站的
  • 西安知名的集团门户网站建设公司通化公司做网站
  • 网站建设资料怎么在主机上的建设网站
  • 开封网站建设公司排名wordpress点击文字弹出层