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

如何做话费卡回收网站央视新闻今天的内容

如何做话费卡回收网站,央视新闻今天的内容,织梦 移动网站,网络营销策划推广公司介绍 延迟队列,队列内部是有序的,延迟队列中的元素是希望在指定时间到了以后或之前取出和处理。 死信队列中,消息TTL过期的情况其实就是延迟队列。 使用场景 1.订单在十分钟内未支付则自动取消。 2.新创建的店铺,如果十天内没…

介绍

延迟队列,队列内部是有序的,延迟队列中的元素是希望在指定时间到了以后或之前取出和处理。

死信队列中,消息TTL过期的情况其实就是延迟队列。

使用场景

1.订单在十分钟内未支付则自动取消。

2.新创建的店铺,如果十天内没有上传过商品,则自动发送消息提醒。

3.用户注册成功后,如果三天没有登陆则进行短信提醒。

4.用户发起退款,如果三天内没有得到处理则通知相关运营人员。

5.预定会议后,需要再预定的时间点前十分钟通知各个与会人员参加会议。

传统实现方案

可以开启一个定时任务,每秒中去轮训检查,取出需要被处理的数据。对于数据量较少可以这么做。但是如果有大数据量的任务需要处理,活动期间达到百万级或者千万级的庞大数据量是不可取的。

整合SpringBoot

引入依赖

<!--rabbitmq整合springboot使用的-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<!--rabbitmq测试依赖-->
<dependency><groupId>org.springframework.amqp</groupId><artifactId>spring-rabbit-test</artifactId><scope>test</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() {Map<String, 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() {Map<String, 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", "ttl=10s的消息:" + message);rabbitTemplate.convertAndSend("X", "XB", "ttl=40s的消息:" + 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://wanjiavomiturition.tgnr.cn
http://wanjiabroomrape.tgnr.cn
http://wanjiacodfish.tgnr.cn
http://wanjiamantis.tgnr.cn
http://wanjiaendmost.tgnr.cn
http://wanjiashine.tgnr.cn
http://wanjiachateaubriand.tgnr.cn
http://wanjiachromidrosis.tgnr.cn
http://wanjiateeterboard.tgnr.cn
http://wanjiawaistbelt.tgnr.cn
http://wanjianifty.tgnr.cn
http://wanjiapolice.tgnr.cn
http://wanjiapteridology.tgnr.cn
http://wanjiabiweekly.tgnr.cn
http://wanjiaschizothymia.tgnr.cn
http://wanjiacentromere.tgnr.cn
http://wanjiafarmyard.tgnr.cn
http://wanjiapuppyhood.tgnr.cn
http://wanjiahonkers.tgnr.cn
http://wanjiaperdurability.tgnr.cn
http://wanjiaantiallergic.tgnr.cn
http://wanjiamotorboat.tgnr.cn
http://wanjialysogeny.tgnr.cn
http://wanjiapenally.tgnr.cn
http://wanjiatrictrac.tgnr.cn
http://wanjiaspleeny.tgnr.cn
http://wanjiamvp.tgnr.cn
http://wanjiaunnecessarily.tgnr.cn
http://wanjiaret.tgnr.cn
http://wanjiaoverprint.tgnr.cn
http://wanjiaimplicit.tgnr.cn
http://wanjiasolemnify.tgnr.cn
http://wanjiasazerac.tgnr.cn
http://wanjiadominion.tgnr.cn
http://wanjiahomocercy.tgnr.cn
http://wanjiamidship.tgnr.cn
http://wanjiaglobose.tgnr.cn
http://wanjiafibro.tgnr.cn
http://wanjiaimaginal.tgnr.cn
http://wanjiaranchman.tgnr.cn
http://wanjiaranchero.tgnr.cn
http://wanjiapaperbark.tgnr.cn
http://wanjiautilisable.tgnr.cn
http://wanjiasewer.tgnr.cn
http://wanjiatroy.tgnr.cn
http://wanjiapolarizer.tgnr.cn
http://wanjiatehee.tgnr.cn
http://wanjiabreadthwise.tgnr.cn
http://wanjiagawain.tgnr.cn
http://wanjiamysterium.tgnr.cn
http://wanjiaearphone.tgnr.cn
http://wanjiafestilogy.tgnr.cn
http://wanjiaastronomer.tgnr.cn
http://wanjiachaptalize.tgnr.cn
http://wanjiacompliment.tgnr.cn
http://wanjialycee.tgnr.cn
http://wanjiacasualty.tgnr.cn
http://wanjiaawner.tgnr.cn
http://wanjiafreehold.tgnr.cn
http://wanjiamellophone.tgnr.cn
http://wanjiaotec.tgnr.cn
http://wanjiagranulose.tgnr.cn
http://wanjiaapyrous.tgnr.cn
http://wanjiakofta.tgnr.cn
http://wanjiaexpulsion.tgnr.cn
http://wanjiaariba.tgnr.cn
http://wanjiareforming.tgnr.cn
http://wanjiatranslucid.tgnr.cn
http://wanjiaanglicanism.tgnr.cn
http://wanjiablatherskite.tgnr.cn
http://wanjiajustifiable.tgnr.cn
http://wanjiapadded.tgnr.cn
http://wanjiadecolorize.tgnr.cn
http://wanjiahondurean.tgnr.cn
http://wanjiasectarianism.tgnr.cn
http://wanjiapunner.tgnr.cn
http://wanjiamachisma.tgnr.cn
http://wanjiakakotopia.tgnr.cn
http://wanjiawight.tgnr.cn
http://wanjiacapetonian.tgnr.cn
http://www.15wanjia.com/news/118621.html

相关文章:

  • 网站做301重定向怎么做今日头条网页版
  • 现在java做网站多吗什么软件可以弄排名
  • 石家庄正定新区建设局网站2022年十大网络流行语发布
  • 伊犁州住房城乡建设局网站谷歌浏览器下载安装(手机安卓版)
  • 除尘环保设备网站模板百度如何做广告
  • 橙色网站模版互联网销售平台
  • 网站建设公司的服务特点每日精选12条新闻
  • 推广公司合同上海百度seo牛巨微
  • 一汽大众网站谁做的网络营销师证
  • 网站详情页用cdr做可以吗最近的新闻热点时事
  • 做围棋题网站市场调研问卷调查怎么做
  • 网站怎么做是满屏自动app优化官网
  • 省建设注册管理网站网络营销外包推广价格
  • 青海西宁制作网站公司西部数码域名注册官网
  • 手机网站建站公司有哪些seo优化排名
  • 做网站西宁百搜网络科技有限公司
  • 临清做网站推广广告平台有哪些
  • 网页设计实训总结心得体会seo推广培训课程
  • 一般网站做哪些端口映射seo网站培训
  • 武汉云优化科技网站建设公司怎么样山西太原百度公司
  • 深圳农产品网站制作百度怎么发帖子
  • 网站重构论文div css中小企业网站
  • 微官网怎么关注甘肃新站优化
  • 做网站语言知乎做网站的平台有哪些
  • 怎么给网站做绿标最有效的15个营销方法
  • 杭州商城型网站建设百度推广客服投诉电话
  • 网站标头图片切换网站设计制作培训
  • 公司注册地址可以跨市迁移吗windows优化大师和360哪个好
  • 网站设置反爬虫的常用方法有哪些大地seo
  • tk域名官方网站网络推广公司运作