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

企业门户网站制作周期百度助手app免费下载

企业门户网站制作周期,百度助手app免费下载,网站开发服务转包合同范本,网站如何做品牌宣传海报延迟队列:其实就是死信队列中消息过期的特殊情况 延迟队列应用场景: 可以用死信队列来实现,不过死信队列要等上一个消息消费成功,才会进行下一个消息的消费,这时候就需要用到延迟插件了,不过要线在docker上…

延迟队列:其实就是死信队列中消息过期的特殊情况

延迟队列应用场景:

在这里插入图片描述
可以用死信队列来实现,不过死信队列要等上一个消息消费成功,才会进行下一个消息的消费,这时候就需要用到延迟插件了,不过要线在docker上装一个插件

安装过程(Linux【Docker】)

前置条件是在Docker中部署过RabbitMq。

1、打开你的远程工具,首先查看docker中已有的容器,主要是为了查看rabbitmq的容器ID

2、将本地下载好的压缩包传到服务器某文件夹下,然后将其复制到Docker中的RabbitMq容器中的plugins文件夹下。

docker cp /home/rabbitmq_delayed_message_exchange-3.8.0.ez a687ef46141b:/plugins

3、进入容器查看该目录下是否有该压缩包。

进入容器命令:(通过容器号或者容器名)

docker exec -it a687ef46141b bash

4、同样在容器中的命令行执行一下命令添加插件。

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

5、退出容器,重启该容器。

6、在管理端即同样可以看到新增了一种交换机模式。

总结:以上就是RabbitMQ的延迟插件的安装过程!

基于插件的延迟队列DEMO

成功安装RabbitMQ的延迟插件之后,我们就可以尝试写一个延迟队列来验证一下是否可以解决上述问题。

首先我们的测试环境是在一个Springboot的框架下完成!

1、最先写配置类

/*** 定义延迟交换机*/
@Configuration
public class RabbitMQDelayedConfig {//队列private static final String DELAYQUEUE = "delayedqueue";//交换机private static final String DELAYEXCHANGE = "delayedExchange";@Beanpublic Queue delayqueue(){return new Queue(DELAYQUEUE);}//自定义延迟交换机@Beanpublic CustomExchange delayedExchange(){Map<String, Object> arguments = new HashMap<>();arguments.put("x-delayed-type","direct");/*** 1、交换机名称* 2、交换机类型* 3、是否需要持久化* 4、是否需要自动删除* 5、其他参数*/return new CustomExchange(DELAYEXCHANGE,"x-delayed-message",true,false,arguments);}//绑定队列和延迟交换机@Beanpublic Binding delaybinding(){return BindingBuilder.bind(delayqueue()).to(delayedExchange()).with("sectest").noargs();}
}

2、先写生产者

/*** 基于插件的延迟队列* 消息生产者*/
@Service
@Slf4j
public class DelayMQSender {@Autowiredprivate RabbitTemplate rabbitTemplate;public void sendmsg(String message,Integer delaytime){log.info("当前时间:{},发送时长{}信息给延迟队列:{}",new Date().toString(),delaytime,message);rabbitTemplate.convertAndSend("delayedExchange","sectest",message,msg->{//设置发送消息的延长时间 单位:msmsg.getMessageProperties().setDelay(delaytime);return msg;});}
}

3、再写消费者

/*** 基于插件的延迟队列* 消息的消费者*/
@Service
@Slf4j
public class DelayMQReceiver {@RabbitListener(queues = "delayedqueue")public void receivemsg(Message messages){String msg = new String(messages.getBody());log.info("当前时间:{},接收时长信息给延迟队列:{}",new Date().toString(),msg);}
}

4、进行测试

将模拟请求放在了一个简易的网页上,点击后输出如下结果,证明当先发送了20s延时的消息,再发送2s延时的消息,在2s后消息正常被消费,基于插件的延迟队列完美解决了问题。

**【思考】:**如果在实际业务场景中使用延迟队列的话,那就需要服务端在消息被消费之后主动告诉前端消费的结果,如果是这样的话,那么Ajxs的通信方式是单双工通信,只能前端主动访问后端并返回结果,后端无法主动发送消息,应该使用Websocket来进行通信才可,websocket是长连接,不同于http的短连接,可以实现全双工通信,前后端都可以主动发送消息。

http://www.tj-hxxt.cn/news/49016.html

相关文章:

  • 网站建设什么打王思聪快速排名工具免费
  • 关于做奶妈的视频网站seo公司哪家好用
  • 做网站一天能接多少单怎么查询搜索关键词
  • 品牌网站建设专家seo合作代理
  • 有哪些h5做的网站深度搜索
  • 湛江怎么做网站关键词优化设计一个公司网站多少钱
  • 电子商务网站建设基本组成培训机构排名
  • wordpress网站翻译插件百度推广登录入口电脑
  • 电商网站建设好么自己做网站网页归档
  • 做网站前期了解客户什么需求nba排行榜最新排名
  • 成都私人网站制作百度教育会员
  • 南宁专业网站建设自动app优化下载
  • 老网站301跳转新网站什么是seo营销
  • 电商平台开发项目seo短视频网页入口引流下载
  • 网站页面策划模板下载怎样自己开发一款软件
  • 政府网站平台建设与管理办法安卓aso优化
  • 北京公司注册核名网站北京网络优化推广公司
  • 建设银行网站怎么注销网银竞价恶意点击器
  • 专业展示设计网站郑州网站建设用户
  • 做网站不给钱seo营销推广平台
  • 凡客诚品倒闭了吗知乎青岛网站优化公司
  • 扬州网站建设link5南京网站设计优化公司
  • 如何做提升自己的网站常州网站建设优化
  • 公章在线制作网站做不了利尔化学股票最新消息
  • 电影聚合网站开发app开发费用一般多少钱
  • 网站建设哈尔滨网站建设1百度网页版登录入口官网
  • 淘宝客怎么做其他网站的推广铜川网站seo
  • 乐清英文网站建设专业做加盟推广的公司
  • 京icp备号在线查询苏州整站优化
  • 岳阳网站建设公司百度网站优化