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

黑户可做网站网站建设与管理代码

黑户可做网站,网站建设与管理代码,襄阳教育网站建设,给公司在百度上做网站1.RabbitMQ延时队列 延迟队列存储的对象是对应的延迟消息#xff0c;所谓“延迟消息”是指当消息被发送以后#xff0c;并不想让消费者立刻拿到消息#xff0c;而是等待特定时间后#xff0c;消费者才能拿到这个消息进行消费 注意RabbitMQ并没有延时队列慨念,…1.RabbitMQ延时队列 延迟队列存储的对象是对应的延迟消息所谓“延迟消息”是指当消息被发送以后并不想让消费者立刻拿到消息而是等待特定时间后消费者才能拿到这个消息进行消费 注意RabbitMQ并没有延时队列慨念,其实是通过死信实现 应用场景:订单30分钟未支付取消… 2.整合springboot 创建springboot Maven项目,其pom文件内容如下: ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.4.2/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.hong/groupIdartifactIdspringboot-rabbitmq/artifactIdversion0.0.1-SNAPSHOT/versionnamespringboot-rabbitmq/namedescriptionspringboot整合Rabbitmq/descriptionpropertiesjava.version17/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependency!--RabbitMQ 依赖--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-amqp/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.47/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.24/version/dependency!--swagger--dependencygroupIdio.springfox/groupIdartifactIdspringfox-swagger2/artifactIdversion3.0.0/version/dependencydependencygroupIdio.springfox/groupIdartifactIdspringfox-swagger-ui/artifactIdversion3.0.0/version/dependency!--RabbitMQ 测试依赖--dependencygroupIdorg.springframework.amqp/groupIdartifactIdspring-rabbit-test/artifactIdscopetest/scope/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion2.4.2/version/plugin/plugins/build/project3.配置文件application.properties spring.rabbitmq.host10.211.55.4 spring.rabbitmq.port5672 spring.rabbitmq.usernameadmin spring.rabbitmq.password1234564.添加Swagger配置类 package com.hong.springboot.rabbitmq.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2;/*** Description: Swagger配置类* Author: hong* Date: 2024-01-24 10:38* Version: 1.0**/ Configuration EnableSwagger2 public class SwaggerConfig {Beanpublic Docket webApiConfig() {return new Docket(DocumentationType.SWAGGER_2).groupName(webApi).apiInfo(webApiInfo()).select().build();}private ApiInfo webApiInfo() {return new ApiInfoBuilder().title(rabbitmq接口文档).description(本文档描述了 rabbitmq 微服务接口定义).version(1.0).contact(new Contact(JAVA小生不才, https://blog.csdn.net/qq_41596346?spm1011.2423.3001.5343, hst1406959716163.com)).build();} }5.队列TTL配置列 package com.hong.springboot.rabbitmq.config;import org.springframework.amqp.core.*; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;import java.util.HashMap; import java.util.Map;/*** Description: TTL队列配置类* Author: hong* Date: 2024-01-24 09:57* Version: 1.0**/Configuration public class TTLQueeueConfig {public static final String X_EXCHANGE X;public static final String QUEUE_A QUEUE_A;public static final String QUEUE_B QUEUE_B;//死信交换机public static final String Y_DEAD_LETTER_EXCHANGE Y;//死信队列public static final String DEAD_LETTER_QUEUE QD;// 声明 xExchangeBean(xExchange)public DirectExchange xExchange() {return new DirectExchange(X_EXCHANGE);}// 声明 死信队列交换机Bean(yExchange)public DirectExchange yExchange() {return new DirectExchange(Y_DEAD_LETTER_EXCHANGE);}//声明队列 A ttl 为 10s 并绑定到对应的死信交换机Bean(queueA)public Queue queueA() {MapString, Object args new HashMap(3);//声明当前队列绑定的死信交换机args.put(x-dead-letter-exchange, Y_DEAD_LETTER_EXCHANGE);//声明当前队列的死信路由 keyargs.put(x-dead-letter-routing-key, YD);//声明队列的 TTLargs.put(x-message-ttl, 10000);return QueueBuilder.durable(QUEUE_A).withArguments(args).build();}// 声明队列 A 绑定 X 交换机Beanpublic Binding queueaBindingX(Qualifier(queueA) Queue queueA,Qualifier(xExchange) DirectExchange xExchange) {return BindingBuilder.bind(queueA).to(xExchange).with(XA);}//声明队列 B ttl 为 40s 并绑定到对应的死信交换机Bean(queueB)public Queue queueB() {MapString, Object args new HashMap(3);//声明当前队列绑定的死信交换机args.put(x-dead-letter-exchange, Y_DEAD_LETTER_EXCHANGE);//声明当前队列的死信路由 keyargs.put(x-dead-letter-routing-key, YD);//声明队列的 TTLargs.put(x-message-ttl, 40000);return QueueBuilder.durable(QUEUE_B).withArguments(args).build();}//声明死信队列 QDBean(queueD)public Queue queueD() {return new Queue(DEAD_LETTER_QUEUE);}//声明队列 B 绑定 X 交换机Beanpublic Binding queuebBindingX(Qualifier(queueB) Queue queueB,Qualifier(xExchange) DirectExchange xExchange) {return BindingBuilder.bind(queueB).to(xExchange).with(XB);}//声明死信队列 QD 绑定关系Beanpublic Binding deadLetterBindingQAD(Qualifier(queueD) Queue queueD,Qualifier(yExchange) DirectExchange yExchange) {return BindingBuilder.bind(queueD).to(yExchange).with(YD);} }6.消息生产者 package com.hong.springboot.rabbitmq.controller;import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import java.text.SimpleDateFormat; import java.util.Date;/*** Description: 消息生产者* Author: hong* Date: 2024-01-28 10:15* Version: 1.0**/ Slf4j RequestMapping(ttl) RestController public class SendMessageController {Autowiredprivate RabbitTemplate rabbitTemplate;GetMapping(sendMsg/{message})public void sendMsg(PathVariable String message) {log.info(当前时间{},发送一条信息给两个 TTL 队列:{},new SimpleDateFormat(yyyy-MM-dd HH:mm:ss).format(new Date()) , message);rabbitTemplate.convertAndSend(X, XA, 消息来自ttl为10S的QA队列: message);rabbitTemplate.convertAndSend(X, XB, 消息来自ttl为10S的QB队列: message);} }7.消息消费者代码 package com.hong.springboot.rabbitmq.consumer;import com.hong.springboot.rabbitmq.config.TTLQueeueConfig; import com.rabbitmq.client.Channel; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component;import java.text.SimpleDateFormat; import java.util.Date;/*** Description: 死信消费者* Author: hong* Date: 2024-01-28 10:22* Version: 1.0**/ Slf4j Component public class DeadLetterQueueConsumer {RabbitListener(queues QD)public void receiveD(Message message, Channel channel) {String msg new String(message.getBody());log.info(当前时间{},收到死信队列信息{},new SimpleDateFormat(yyyy-MM-dd HH:mm:ss).format(new Date()) , msg);}}启动项目发起http://localhost:8080/ttl/sendMsg/JAVA%E5%B0%8F%E7%94%9F%E4%B8%8D%E6%89%8D请求 8.代码优化 QA和QB的ttl都写死啦若是再来1个时间不同的咋处理 8.1.TTLQueeueConfig优化 代码中添加如下代码 //QC 不设置ttl 消息自带ttlpublic static final String QUEUE_C QC;//声明队列 C 死信交换机 Bean(queueC)public Queue queueC() {MapString, Object args new HashMap(3);//声明当前队列绑定的死信交换机args.put(x-dead-letter-exchange, Y_DEAD_LETTER_EXCHANGE);//声明当前队列的死信路由 keyargs.put(x-dead-letter-routing-key, YD);//没有声明 TTL 属性return QueueBuilder.durable(QUEUE_C).withArguments(args).build();}//声明队列C绑定 X 交换机Beanpublic Binding queueCBindingX(Qualifier(queueC) Queue queueC,Qualifier(xExchange) DirectExchange xExchange) {return BindingBuilder.bind(queueC).to(xExchange).with(XC);}8.2.生产者代码优化 添加如下方法 /*** 延时队列优化* param message 消息* param ttlTime 延时的毫秒*/GetMapping(sendExpirationMsg/{message}/{ttlTime})public void sendMsg(PathVariable String message, PathVariable String ttlTime) {rabbitTemplate.convertAndSend(X, XC, message, correlationData - {correlationData.getMessageProperties().setExpiration(ttlTime);return correlationData;});log.info(当前时间{},发送一条时长{}毫秒TTL信息给队列C:{}, new SimpleDateFormat(yyyy-MM-dd HH:mm:ss).format(new Date()) , ttlTime, message);}
http://www.pierceye.com/news/324159/

相关文章:

  • 国外做储物柜的网站做亚马逊网站一般发什么快递
  • 仿古建筑公司网站廊坊网站建设公司
  • 在线动画手机网站模板下载学软件开发需要什么基础
  • 北京的网站建设收费标准推广产品的方法和步骤
  • 北京市专业网站制作企业合肥做网络推广的公司
  • 网站建设php教程视频手机商城网站设计
  • 重庆网站建设公司哪个最好老家装设计网
  • 外贸网站建设产品crm公司
  • 网站做查赚钱网站建设捌金手指花总四
  • 有没有做链接的网站彩票型网站建设
  • 15年做哪个网站能致富网站界面设计的相关指南
  • 网站报价功能清单德州做网站最好的公司
  • 网站开发设计图片搭建论坛需要多少钱
  • 网站建设价格明细做一套二级域名网站怎么做
  • 网站建设 发展方向手机开发人员选项怎么打开
  • 深圳网站建设深圳网络邢台市政建设集团股份有限公司网站
  • 广东网站开发搭建旅游网站开发内容
  • 恭城网站建设中象做网站怎么样
  • 泰兴网站建设开发门户网站内容建设岗位职责
  • 单页网站有后台搜索引擎优化工具有哪些
  • 视频网站弹幕怎么做中小企业网站优化
  • 南充网站建设江宁外贸网站建设
  • 从事网站开发需要的证书泰安百度推广代理
  • 找工作哪个网站好2022查询网站备案显示划横线
  • 06627网页制作和网站建设如何制作自己的公司内部网站
  • 网站营销与推广方案百度大数据分析
  • 手机怎么做自己的网站做网站的公司广州
  • asp.net网站开发案例教程南京seo排名
  • 购物网站开发技术分销
  • 企业网站建设专家工业产品设计包括哪些