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

深圳哪里有做网站的铜川网站设计

深圳哪里有做网站的,铜川网站设计,在什么网站做外贸,企业seo可以达到怎样的效果介绍 延迟队列#xff0c;队列内部是有序的#xff0c;延迟队列中的元素是希望在指定时间到了以后或之前取出和处理。 死信队列中#xff0c;消息TTL过期的情况其实就是延迟队列。 使用场景 1.订单在十分钟内未支付则自动取消。 2.新创建的店铺#xff0c;如果十天内没…介绍 延迟队列队列内部是有序的延迟队列中的元素是希望在指定时间到了以后或之前取出和处理。 死信队列中消息TTL过期的情况其实就是延迟队列。 使用场景 1.订单在十分钟内未支付则自动取消。 2.新创建的店铺如果十天内没有上传过商品则自动发送消息提醒。 3.用户注册成功后如果三天没有登陆则进行短信提醒。 4.用户发起退款如果三天内没有得到处理则通知相关运营人员。 5.预定会议后需要再预定的时间点前十分钟通知各个与会人员参加会议。 传统实现方案 可以开启一个定时任务每秒中去轮训检查取出需要被处理的数据。对于数据量较少可以这么做。但是如果有大数据量的任务需要处理活动期间达到百万级或者千万级的庞大数据量是不可取的。 整合SpringBoot 引入依赖 !--rabbitmq整合springboot使用的-- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-amqp/artifactId /dependency !--rabbitmq测试依赖-- dependencygroupIdorg.springframework.amqp/groupIdartifactIdspring-rabbit-test/artifactIdscopetest/scope /dependency 配置文件添加配置 spring:rabbitmq:host: 192.168.171.128username: adminpassword: 123port: 5672 延迟队列代码架构图  说明QD为死信队列QA和QB是普通队列。x为直接交换机y为死信交换机。 代码结构的转变 整合springboot项目之前将队列和交换机的声明和配置放在消费者端的。那么整合springboot之后将会将这些配置放在配置文件类代码中。 代码 配置类声明队列、交换机、绑定关系 package com.xkj.org.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;/*** TTL队列配置文件代码*/ Configuration public class TtlQueueConfig {//普通交换机public static final String X_EXCHANGE X;//死信交换机public static final String Y_HEAD_LETTER_EXCHANGE Y;//普通队列public static final String QUEUE_A QA;public static final String QUEUE_B QB;//死信队列public static final String DEAD_LETTER_QUEUE QD;/*** 声明普通交换机X,bean的别名xExchange* return*/Bean(xExchange)public DirectExchange xExchange() {return new DirectExchange(X_EXCHANGE);}/*** 声明死信交换机Y,bean的别名yExchange* return*/Bean(yExchange)public DirectExchange yExchange() {return new DirectExchange(Y_HEAD_LETTER_EXCHANGE);}/*** 声明普通队列QA* return*/Bean(queueA)public Queue queueA() {MapString, Object arguments new HashMap(3);//设置死信交换机arguments.put(x-dead-letter-exchange, Y_HEAD_LETTER_EXCHANGE);//声明死信的routingeyarguments.put(x-dead-letter-routing-key, YD);//设置消息过期时间ttl为10sarguments.put(x-message-ttl, 10000);return QueueBuilder.durable(QUEUE_A).withArguments(arguments).build();}/*** 声明普通队列QB* return*/Bean(queueB)public Queue queueB() {MapString, Object arguments new HashMap(3);//设置死信交换机arguments.put(x-dead-letter-exchange, Y_HEAD_LETTER_EXCHANGE);//声明死信的routingKeyarguments.put(x-dead-letter-routing-key, YD);//设置消息过期时间ttl为40sarguments.put(x-message-ttl, 40000);return QueueBuilder.durable(QUEUE_B).withArguments(arguments).build();}/*** 声明死信队列QD* return*/Bean(queueD)public Queue queueD() {return QueueBuilder.durable(DEAD_LETTER_QUEUE).build();}/*** 将队列QA绑定到交换机X上指定routingKey为XA* param queueA* param xExchange* return*/Beanpublic Binding queueABindingX(Qualifier(queueA) Queue queueA, Qualifier(xExchange)DirectExchange xExchange) {return BindingBuilder.bind(queueA).to(xExchange).with(XA);}/*** 将队列QB绑定到交换机X上指定routingKey为XB* param queueB* param xExchange* return*/Beanpublic Binding queueBBindingX(Qualifier(queueB) Queue queueB, Qualifier(xExchange) DirectExchange xExchange) {return BindingBuilder.bind(queueB).to(xExchange).with(XB);}/*** 将队列QD绑定到交换机Y上指定routingKey为YD* param queueD* param yExchange* return*/Beanpublic Binding queueDBindingY(Qualifier(queueD) Queue queueD, Qualifier(yExchange) DirectExchange yExchange) {return BindingBuilder.bind(queueD).to(yExchange).with(YD);} }生产者通过controller接口发送 package com.xkj.org.controller;import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; 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.util.Date;/*** 消息生产者*/ Slf4j RestController RequestMapping(/ttl) Api(tags 消息生产者, description 消息生产者控制器) public class MessageController {Autowiredprivate RabbitTemplate rabbitTemplate;ApiOperation(消息发送测试)GetMapping(/sendMsg/{msg})public void sendMsg(ApiParam(value 发送的消息内容, required true) PathVariable(msg) String message) {log.info(当前时间{}发送一条消息给两个队列{}, new Date().toString(), message);rabbitTemplate.convertAndSend(X, XA, ttl10s的消息 message);rabbitTemplate.convertAndSend(X, XB, ttl40s的消息 message);}}消费者监听器 package com.xkj.org.listener;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.util.Date;/*** 消费者*/ Slf4j Componentpublic class DeadLetterQueueConsumer {RabbitListener(queues QD)public void receiveD(Message message, Channel channel) throws Exception {String msg new String(message.getBody(), UTF-8);log.info(当前时间{}收到死信队列的消息{}, new Date().toString(), msg);} }结果
http://www.hkea.cn/news/14386752/

相关文章:

  • 一键建站系统源码网站后台登录界面
  • 免费前端模板网站京东网站建设机构
  • 安徽网站建设服务wordpress重装密码
  • 免费的网站发布wap网站建设兴田德润优惠
  • 页面设计好看的网站东圃做网站公司
  • 内蒙古做网站网址ip地址查询工具
  • 排名优化网站seo排名免备案国内虚拟主机
  • 成都网站优化多少钱wordpress升级原理
  • 城建档案网站建设 博客找人网站
  • 建网站网站wordpress之搜索标题
  • 网站开店前的四项基本建设网络品牌营销
  • 游戏网站模网络设计公司有哪些
  • 设计师网站资源门户网站宣传方案
  • wordpress软件网站模板下载制造业营销外贸网站建设
  • 新都有没有做网站的wordpress 点踩
  • 网站用ps做还是ai做兼职的网站有哪些工作内容
  • wordpress页脚小工具居中网站优化一般怎么做
  • 中能建设集团电子商务网站做网站常用代码
  • 视频网站建设审批东莞网站开发建设
  • 优秀设计网站点评如何免费做推广
  • 郑州手机网站建设wordpress连接mysql8
  • 做和别人类似的网站侵权吗聊城专业网站建设
  • 动态效果酷炫的网站做网站的公司倒闭了
  • ui设计师个人网站网站建设合同书简单版
  • 珠海市网站网站建设专业介绍
  • 白云区江夏附近做网站山东济南网站建设公司
  • 微信显示个人网站深圳市小程序科技有限公司
  • 网站注册 英文专业做网文的网站好
  • 微网站与微信的关系只做财经的网站
  • 如何建立商城网站drupal vs wordpress