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

滨海专业做网站触屏手机网站设计

滨海专业做网站,触屏手机网站设计,wordpress 主题 pdf,德阳网站建设公司问题 前面谈到基于死信的延迟队列,存在的问题:如果第一个消息延时时间很长,而第二个消息延时时间很短,第二个消息并不会优先得到执行。 下载插件 地址:https://github.com/rabbitmq/rabbitmq-delayed-message-excha…

问题

前面谈到基于死信的延迟队列,存在的问题:如果第一个消息延时时间很长,而第二个消息延时时间很短,第二个消息并不会优先得到执行。

下载插件

地址:https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases

rabbitmq_delayed_message_exchange-3.8.0.ez

说明:rabbitmq安装后,会生成这个目录

/usr/lib/rabbitmq/lib/rabbitmq_server-3.8.8/plugins/

拷贝插件到上面这个目录

安装插件

需要重启rabbitmq

监测插件是否安装成功

可以看出不再使用延迟队列,而是使用延迟交换机。

代码

配置代码

package com.xkj.org.config;import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.CustomExchange;
import org.springframework.amqp.core.Queue;
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;@Configuration
public class DelayExchangeConfig {//队列public static final String DELAYED_QUEUE_NAME = "delayed.queue";//交换机public static final String DELAYED_EXCHANGE_NAME = "delayed.exchange";//RoutingKeypublic static final String DELYAED_ROUTING_KEY = "delayed.routingkey";@Beanpublic CustomExchange delayedExchange() {Map<String, Object> arguments = new HashMap<>();arguments.put("x-delayed-type", "direct");//第一个参数交换机的名称//第二个参数交换机的类型//第三个参数是否持久化//第四个参数是否删除//第五个参数其他参数return new CustomExchange(DELAYED_EXCHANGE_NAME, "x-delayed-message", true, false,arguments);}@Beanpublic Queue delayedQueue() {return new Queue(DELAYED_QUEUE_NAME);}@Beanpublic Binding delayedQueueBindingDelayedExchange(@Qualifier("delayedExchange")CustomExchange delayedExchange,@Qualifier("delayedQueue")Queue delayedQueue) {return BindingBuilder.bind(delayedQueue).to(delayedExchange).with(DELYAED_ROUTING_KEY).noargs();}}

生产者

@ApiOperation("基于插件的延迟消息")@GetMapping("/sendDelayedMsg/{msg}/{delayedTime}")public void sendDelayedMsg(@ApiParam(value = "消息内容", required = true)@PathVariable("msg") String message,@ApiParam(value = "延迟时间", required = true)@PathVariable("delayedTime")Integer delayedTime) {log.info("当前时间{},发送一条消息给延迟交换机:{},delayedTime={}", new Date().toString(), message, delayedTime);rabbitTemplate.convertAndSend("delayed.exchange", "delayed.routingkey", message, msg -> {msg.getMessageProperties().setDelay(delayedTime);return msg;});}

消费者

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.io.UnsupportedEncodingException;
import java.util.Date;/*** 基于插件的延迟消息队列监听*/
@Slf4j
@Component
public class DelayedQueueConsumer {@RabbitListener(queues = "delayed.queue")public void receiver(Message message, Channel channel) throws UnsupportedEncodingException {String msg = new String(message.getBody(), "UTF-8");log.info("当前时间:{},收到延迟队列的消息:{}", new Date().toString(), msg);}}

 总结

延迟队列可以保证消息可靠发送,消息可靠投递,死信队列保证消息至少被消费一次,已经未被处理的消息不会被丢弃。

http://www.yayakq.cn/news/932593/

相关文章:

  • 59网一起做网站优质外贸网站
  • 福建省第二电力建设公司网站个人免费自助建站
  • swoole做网站苏州工业园区两学一做教育网站
  • asp.net网站开发步骤泰安软件公司 泰安网站建设
  • 南京网站c建设云世家图片外链生成工具在线
  • 网站设计培训学校有哪家wordpress实现中英文切换
  • 平面设计素材怎么找电商网站优化方案
  • 淮阴区建设局网站建设企业网站收费吗
  • 电子商务网站建设方案网站优化定做
  • 河北网站开发报价网站后台怎么更新网站
  • 做网站入门网站放到国外空间
  • 主流的网站建设的软件logo免费设计在线生成标智客
  • 域名交易网站哪个好近期网络舆情事件热点分析
  • 建设项目一次公示网站成都手机网站建
  • 临猗网站建设额尔古纳网站建设
  • 网站怎么做评估seo有些什么关键词
  • 外贸推广网站有哪些通知模板范文
  • 青海城乡和住房建设厅网站区块链企业解决方案
  • 深圳市门户网站建设怎么样手机网站和微网站
  • 无锡专业做网站的公司easyUI网站开发
  • 网站建设架构图怎么制作wordpress主题
  • 自家电脑做网站服务器w7花生壳徐州人才网最新招聘2021
  • 哪些网站可以做ppi青岐网站建设平台
  • phpmysql网站设计卡盟网站怎么做图片素材
  • 高效的宝安网站推广中国建设银行官网查询
  • 电商网站建设商业计划书wordpress怎么看展现量
  • 网站logo下载久久建筑网高空坠落专项应急预案
  • 成品网站建设流程动态列线图怎么制作网页
  • 哪块行业需要网站建设建设通网站怎么查项目经理在建
  • 建设网站行业云泌阳县住房建设局网站