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

自己免费做网站(三)哪些平台可以做推广

自己免费做网站(三),哪些平台可以做推广,昌平做网站的公司,上海专业做网站推广的公司📚目录 📚简介:🚀比较💨通常注册🌈优化后注册 ✍️代码💫自动注册的关键代码 📚简介: 该项目介绍,rabbitMq消息中间件,对队列的注册,交换机的注册&#xff0c…

📚目录

  • 📚简介:
  • 🚀比较
    • 💨通常注册
    • 🌈优化后注册
  • ✍️代码
    • 💫自动注册的关键代码

📚简介:

       该项目介绍,rabbitMq消息中间件,对队列的注册,交换机的注册,队列与交换机的绑定关系进行注册,这三个步骤进行简化,通过枚举的配置完成这些操作。可以参考之前写的文章>SpringBoot整合Rabbitmq

🚀比较

💨通常注册

通常我们创建一个队列至少三个步骤

  1. 声明队列
  2. 声明交换机
  3. 队列绑定到交换机上,并且且设置路由关键字

在这里插入图片描述

🌈优化后注册

      我们只需要关注我们的队列枚举,里面已经定义好了通用配置,只有队列名称,交换机,交换机类型的指定我们需要自己定义外,之后的注册不需要你们关注即可完成。

在这里插入图片描述

✍️代码

💫自动注册的关键代码

RabbitMqConfig

代码的运行逻辑

  1. 应用启动:当 Spring Boot 应用启动时,RabbitAdmin Bean 会被初始化并启动。
  2. 队列和交换机的创建:在 createQueue 方法中,代码会遍历所有的队列枚举,将每个队列的相关配置(如交换机类型、持久性等)传递给相应的方法,创建所需的队列和交换机。
  3. 完成配置:一旦所有的交换机和队列创建完成,它们之间的绑定关系也会被设置好,从而确保消息可以在它们之间正确地流动。
/*** @author itmei*/
@Configuration
public class RabbitMqConfig {///**// * 声明队列// * @return// *///@Bean//public Queue directQueue(){//    //持久 - 如果我们声明一个持久队列,则为真(该队列将在服务器重启后继续存在)//    return new Queue(RabbitMqQueueEnum.DEFAULT_DIRECT.getQueueName(),false);//}/////**// * 声明交换机// * @return// *///@Bean//public DirectExchange directExchange(){//    //交换器名称、是否持久化、是否自动删除//    return new DirectExchange(RabbitMqQueueEnum.DEFAULT_DIRECT.getExchangeName(),true,false);//}/////***// * 队列绑定到交换机上// * 并且设置路由关键字// *///@Bean//public Binding binding(Queue queue,DirectExchange exchange){//    return BindingBuilder.bind(queue).to(exchange).with(RabbitMqQueueEnum.DEFAULT_DIRECT.getRoutingKey());//}/*** 用于动态创建队列和交换机* @param rabbitTemplate rabbitMq的模板对象* @return*/@Beanpublic RabbitAdmin rabbitAdmin(RabbitTemplate rabbitTemplate){RabbitAdmin rabbitAdmin = new RabbitAdmin(rabbitTemplate);//默认就是truerabbitAdmin.setAutoStartup(true);return rabbitAdmin;}/*** 绑定* @param rabbitAdmin RabbitAdmin 实例,用于管理队列和交换机的声明* @return*/@Bean("createQueue")public Object createQueue(RabbitAdmin rabbitAdmin) {// 遍历队列枚举RabbitMqQueueEnum.toList().forEach(rabbitMqQueueEnum -> {//创建交换机createExchangeHandle(rabbitAdmin,rabbitMqQueueEnum);// 创建对列createQueueHandle(rabbitAdmin,rabbitMqQueueEnum);// 绑定交换机和对列createBindingHandle(rabbitAdmin,rabbitMqQueueEnum);});return null;}/*** 注册交换机的方法,根据传入的队列枚举配置创建相应类型的交换机。* @param rabbitAdmin RabbitAdmin 实例,用于管理队列和交换机的声明* @param rabbitMqQueueEnum 自定义队列枚举,包含交换机的配置信息,包含交换机的配置信息*/private void createExchangeHandle(RabbitAdmin rabbitAdmin, RabbitMqQueueEnum rabbitMqQueueEnum) {// 获取当前队列的交换机配置ExchangeConfigEnum exchangeConfigEnum = rabbitMqQueueEnum.getExchangeConfigEnum();String exchangeName = rabbitMqQueueEnum.getExchangeName();// 检查是否为延迟交换机if (rabbitMqQueueEnum.isDelayedExchange()) {// 创建并声明延迟交换机rabbitAdmin.declareExchange(new CustomDelayedExchange(// 交换机名称exchangeName,// 交换机是否持久化exchangeConfigEnum.isDurable(),// 交换机是否自动删除exchangeConfigEnum.isAutoDelete(),// 交换机类型exchangeConfigEnum.getType().name().toLowerCase()));} else {// 创建并声明普通交换机createStandardExchange(rabbitAdmin, exchangeName, exchangeConfigEnum);}}/*** 创建并声明标准交换机的方法。* @param rabbitAdmin RabbitAdmin 实例,用于声明交换机* @param exchangeName 交换机的名称* @param exchangeConfigEnum 交换机的配置枚举,包含持久化和自动删除等信息*/private void createStandardExchange(RabbitAdmin rabbitAdmin, String exchangeName, ExchangeConfigEnum exchangeConfigEnum) {AbstractExchange exchange;// 根据交换机类型创建对应的交换机实例switch (exchangeConfigEnum.getType()) {case FANOUT:// 创建 Fanout 交换机exchange = new FanoutExchange(exchangeName, exchangeConfigEnum.isDurable(), exchangeConfigEnum.isAutoDelete());break;case TOPIC:// 创建 Topic 交换机exchange = new TopicExchange(exchangeName, exchangeConfigEnum.isDurable(), exchangeConfigEnum.isAutoDelete());break;case DIRECT:// 创建 Direct 交换机exchange = new DirectExchange(exchangeName, exchangeConfigEnum.isDurable(), exchangeConfigEnum.isAutoDelete());break;default:// 不支持的交换机类型,直接返回return;}// 声明创建的交换机rabbitAdmin.declareExchange(exchange);}/*** 注册队列* @param rabbitAdmin RabbitAdmin 实例,用于管理队列和交换机的声明* @param rabbitMqQueueEnum 自定义队列枚举,包含交换机的配置信息*/public void createQueueHandle(RabbitAdmin rabbitAdmin, RabbitMqQueueEnum rabbitMqQueueEnum) {QueueConfigEnum queueEnum = rabbitMqQueueEnum.getQueueConfigEnum();rabbitAdmin.declareQueue(new Queue(rabbitMqQueueEnum.getQueueName(),queueEnum.isDurable(), queueEnum.isExclusive(), queueEnum.isAutoDelete(), queueEnum.getArguments()));}/*** 注册绑定关系* @param rabbitAdmin RabbitAdmin 实例,用于管理队列和交换机的声明* @param rabbitMqQueueEnum 自定义队列枚举,包含交换机的配置信息*/public void createBindingHandle(RabbitAdmin rabbitAdmin, RabbitMqQueueEnum rabbitMqQueueEnum) {// 绑定rabbitAdmin.declareBinding(new Binding(// queue名称rabbitMqQueueEnum.getQueueName(),Binding.DestinationType.QUEUE,// exchange名称rabbitMqQueueEnum.getExchangeName(),// queue的routingKeyrabbitMqQueueEnum.getRoutingKey(),null));}/*** 用于创建延迟队列的交换机*/public static class CustomDelayedExchange extends CustomExchange {public CustomDelayedExchange(String name, boolean durable, boolean autoDelete, String delayedType) {super(name, "x-delayed-message", durable, autoDelete, Collections.singletonMap("x-delayed-type", delayedType));}}
}

交换机枚举配置

/*** @Author itmei*/
@Getter
@AllArgsConstructor
public enum ExchangeConfigEnum {/*** 直接模式*/DIRECT_EXCHANGE(ExchangeModelEnum.DIRECT, true, false),/*** 匹配模式*/TOPIC_EXCHANGE(ExchangeModelEnum.TOPIC, true, false),;/*** 模式*/private final ExchangeModelEnum type;/*** 是否持久化*/private final boolean durable;/*** 是否自动删除*/private final boolean autoDelete;}

交换机枚举类型

/*** @Author itmei*/
@Getter
@AllArgsConstructor
public enum ExchangeModelEnum {/*** 广播*/FANOUT,/*** 匹配*/TOPIC,/*** 直接模式*/DIRECT
}

默认队列配置

/*** @author itmei*/
@Getter
@AllArgsConstructor
public enum QueueConfigEnum {/*** 自定义的队列配置*/DEFAULT_QUEUE_CONFIG(true, false, false, null),;/*** 是否为持久队列(该队列将在服务器重启后保留下来)*/private final boolean durable;/*** 是否为排他队列(该队列仅由声明者的队列使用连接)*/private final boolean exclusive;/*** 如果队列为空是否删除(如果服务器在不再使用队列时是否删除队列)*/private final boolean autoDelete;/*** queue的参数*/private final Map<String, Object> arguments;}

自定义队列配置(以后只需要把队列增加到这里即可)


/*** @author itmei*/
@Getter
@AllArgsConstructor
public enum RabbitMqQueueEnum {/*** 自定义的队列与交换机的关系*/DEFAULT_DIRECT("direct_itmei_exchange","direct.itmei.exchange.default.queue","direct.itmei.exchange.default.queue",ExchangeConfigEnum.DIRECT_EXCHANGE,QueueConfigEnum.DEFAULT_QUEUE_CONFIG,true,"默认队列"),DEFAULT_TEST_DIRECT("direct_itmei_exchange","direct.itmei.exchange.test.queue","direct.itmei.exchange.test.queue",ExchangeConfigEnum.DIRECT_EXCHANGE,QueueConfigEnum.DEFAULT_QUEUE_CONFIG,true,"测试对列"),;/*** 交换机名称*/private final String exchangeName;/*** 队列名称(每个队列的名称应是唯一的)*/private final String queueName ;/*** 默认保持和对列名称一样,模式为 topic时需要注意匹配符设置* 队列路由键(*  注意匹配,#匹配一个或者多个,*匹配一个*      如: abc.new.n , abc.new.n.m*      abc.new.# 匹配{abc.new.n,abc.new.n.m}*      abc.new.* 匹配{abc.new.n}* )*/private final String routingKey;/*** 交换机的配置*/private final ExchangeConfigEnum exchangeConfigEnum;/*** 对列的配置*/private final QueueConfigEnum queueConfigEnum;/*** 是否是延迟交换机 如果已经存在不是延迟交换机则需要删除再标记* treu:延迟交换机 false:普通交换机*/private final boolean delayedExchange;/*** 描述*/private final String desc;public static List<RabbitMqQueueEnum> toList() {return Arrays.asList(RabbitMqQueueEnum.values());}}

文章转载自:
http://dinncodishabituate.bpmz.cn
http://dinncodysprosody.bpmz.cn
http://dinncoyourself.bpmz.cn
http://dinncotrondheim.bpmz.cn
http://dinncodeuteranopia.bpmz.cn
http://dinncoautoconverter.bpmz.cn
http://dinncovext.bpmz.cn
http://dinncoageless.bpmz.cn
http://dinncobss.bpmz.cn
http://dinncolassen.bpmz.cn
http://dinncolazaretto.bpmz.cn
http://dinncoparmigiana.bpmz.cn
http://dinncoflueric.bpmz.cn
http://dinncofluxmeter.bpmz.cn
http://dinncopremarketing.bpmz.cn
http://dinncosemiconsciousness.bpmz.cn
http://dinncosaumur.bpmz.cn
http://dinncotelson.bpmz.cn
http://dinncoosmous.bpmz.cn
http://dinncocolpitis.bpmz.cn
http://dinncotradeswoman.bpmz.cn
http://dinncotrippy.bpmz.cn
http://dinncometalogic.bpmz.cn
http://dinncowillemite.bpmz.cn
http://dinncovermont.bpmz.cn
http://dinncoadipsia.bpmz.cn
http://dinncoendophyte.bpmz.cn
http://dinncotantrum.bpmz.cn
http://dinncoimmiserize.bpmz.cn
http://dinncoolunchun.bpmz.cn
http://dinncoroundelay.bpmz.cn
http://dinncoocam.bpmz.cn
http://dinncothurible.bpmz.cn
http://dinncomiskolc.bpmz.cn
http://dinncospuddy.bpmz.cn
http://dinncothomasine.bpmz.cn
http://dinncocountrywide.bpmz.cn
http://dinncoterrazzo.bpmz.cn
http://dinncotip.bpmz.cn
http://dinncoarmoured.bpmz.cn
http://dinncodishoard.bpmz.cn
http://dinncoeucalyptol.bpmz.cn
http://dinncofeveret.bpmz.cn
http://dinncomantilla.bpmz.cn
http://dinncosquamate.bpmz.cn
http://dinncomicrofiche.bpmz.cn
http://dinncosignori.bpmz.cn
http://dinncoconnectedness.bpmz.cn
http://dinncolubrical.bpmz.cn
http://dinncobiscuit.bpmz.cn
http://dinnconanoprogram.bpmz.cn
http://dinncomystagogical.bpmz.cn
http://dinncomousey.bpmz.cn
http://dinncokilogauss.bpmz.cn
http://dinncoscrotocele.bpmz.cn
http://dinncomeantime.bpmz.cn
http://dinnconutritive.bpmz.cn
http://dinncolichi.bpmz.cn
http://dinncogachupin.bpmz.cn
http://dinncomuckle.bpmz.cn
http://dinncopubescent.bpmz.cn
http://dinncohoatching.bpmz.cn
http://dinncojillion.bpmz.cn
http://dinncoteratoid.bpmz.cn
http://dinncogladden.bpmz.cn
http://dinncostirrer.bpmz.cn
http://dinncomicella.bpmz.cn
http://dinncononpros.bpmz.cn
http://dinncoflexile.bpmz.cn
http://dinncopenicil.bpmz.cn
http://dinncooptometer.bpmz.cn
http://dinncofennoscandian.bpmz.cn
http://dinncotinwork.bpmz.cn
http://dinncofuriously.bpmz.cn
http://dinncotoughie.bpmz.cn
http://dinncotitaness.bpmz.cn
http://dinncoimmurement.bpmz.cn
http://dinnconodulate.bpmz.cn
http://dinncoferromagnesian.bpmz.cn
http://dinncointerconnect.bpmz.cn
http://dinncoimperence.bpmz.cn
http://dinncogigolette.bpmz.cn
http://dinncophosphorylase.bpmz.cn
http://dinncodelphinium.bpmz.cn
http://dinncosook.bpmz.cn
http://dinncolilt.bpmz.cn
http://dinncoredneck.bpmz.cn
http://dinncoclouded.bpmz.cn
http://dinncocarbocyclic.bpmz.cn
http://dinncolarvivorous.bpmz.cn
http://dinncomunt.bpmz.cn
http://dinncotenure.bpmz.cn
http://dinncoregisseur.bpmz.cn
http://dinncoinfula.bpmz.cn
http://dinncocharka.bpmz.cn
http://dinncocoronate.bpmz.cn
http://dinncotrollpoy.bpmz.cn
http://dinncomoneychanging.bpmz.cn
http://dinncoimpel.bpmz.cn
http://dinncopigment.bpmz.cn
http://www.dinnco.com/news/157134.html

相关文章:

  • 买个个域名做网站咋做百度引擎搜索
  • 泉州网红打卡地站长工具seo词语排名
  • 商城网站商家入驻功能整合营销案例
  • 360浏览器打开是2345网址导航win7优化大师免安装版
  • 顺德中小企业网站建设近三天的国内新闻
  • 能免费建手机网站吗重庆排名优化整站优化
  • 网站建设人员架构免费发帖推广平台
  • 制作网页的网站费用属于资本性支出吗产品推广计划方案模板
  • wordpress调用标签代码郑州厉害的seo顾问公司
  • 当前政府网站建设存在的问题及对策百度怎么推广广告
  • 网络广告营销的特性山西seo优化公司
  • 做网站的协议书和计划书新品推广活动方案
  • 网页兼容性站点市场监督管理局是干什么的
  • 关于做膳食的一些网站基本营销策略有哪些
  • 济南pc网站建设公司济南百度代理
  • 模板网站建设公司电话网络推广引流是做什么的
  • 怎样建一个自己的网站百度一下移动版首页
  • 洮南住建局网站长沙seo网络推广
  • 吉林智能网站建设价格整合网络营销
  • ssm框架做电影网站泉州关键词排名工具
  • 做网站开源框架深圳头条新闻
  • 做音乐网站需要什么深圳网站维护
  • 网站可信精准引流获客软件
  • 做网站维护累吗电话营销销售系统
  • 龙岩网站设计一般要多久网店seo名词解释
  • 百事通网做网站服装店营销策划方案
  • 个人网站模板响应式今日财经新闻
  • 自建网站的好处网络营销策略优化
  • 公司网站.可以自己做吗关键词调词平台费用
  • 建设部网站公示公告360站长平台