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

贵阳网站建设多点互动cdn wordpress 登录

贵阳网站建设多点互动,cdn wordpress 登录,深圳外贸公司注册,Wordpress写文章贴代码Spring Boot 中如何将队列和交换机绑定#xff08;含实例讲解#xff09; 在使用 Spring Boot 开发高并发的秒杀系统或者其他场景时#xff0c;RabbitMQ 是常用的消息队列中间件之一。本文将详细讲解如何在配置类中通过代码将队列与交换机绑定#xff0c;并指定路由键来实…Spring Boot 中如何将队列和交换机绑定含实例讲解 在使用 Spring Boot 开发高并发的秒杀系统或者其他场景时RabbitMQ 是常用的消息队列中间件之一。本文将详细讲解如何在配置类中通过代码将队列与交换机绑定并指定路由键来实现消息路由。 一、RabbitMQ中的关键概念 Exchange交换机交换机负责接收消息并根据路由规则分发给绑定的队列。常见的交换机类型有 Direct、Fanout、Topic 等。Queue队列队列是消息实际存储的地方消费者从队列中获取消息。Routing Key路由键生产者发送消息时会携带一个路由键RabbitMQ 根据这个路由键决定把消息发送到哪个队列。Binding绑定绑定是将队列和交换机关联在一起消息通过路由键决定是否路由到某个队列。 二、需求描述 假设我们在秒杀系统中有一个秒杀订单的队列和对应的交换机分别为 seckill.queue 和 seckill.exchange。为了将订单处理的消息路由到正确的队列我们需要将它们通过一个 seckill.routingkey 绑定在一起。 三、配置代码实现 1. 引入必要的依赖 首先在 pom.xml 中引入 RabbitMQ 的依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-amqp/artifactId /dependency2. 配置类中绑定队列和交换机 在配置类中我们需要定义交换机、队列以及将两者通过路由键绑定。以下是具体实现 import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.BindingBuilder; import org.springframework.amqp.core.Queue; import org.springframework.amqp.core.TopicExchange; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration public class RabbitMQConfig {// 定义常量表示交换机、队列和路由键public static final String SECKILL_EXCHANGE seckill.exchange;public static final String SECKILL_QUEUE seckill.queue;public static final String SECKILL_ROUTINGKEY seckill.routingkey;// 1. 定义秒杀交换机Beanpublic TopicExchange seckillExchange() {return new TopicExchange(SECKILL_EXCHANGE);}// 2. 定义秒杀队列Beanpublic Queue seckillQueue() {return new Queue(SECKILL_QUEUE);}// 3. 绑定队列到交换机并指定路由键Beanpublic Binding bindingSeckillQueue(Queue seckillQueue, TopicExchange seckillExchange) {return BindingBuilder.bind(seckillQueue).to(seckillExchange).with(SECKILL_ROUTINGKEY);} }3. 代码详细解读 seckillExchange()这是定义的一个 TopicExchange 类型的交换机。在 RabbitMQ 中TopicExchange 允许根据路由键的模式匹配将消息路由到不同的队列中。seckillQueue()定义了一个 Queue 队列用来存储秒杀订单的消息。此处的 Queue 是持久化的当 RabbitMQ 重启时队列中的消息不会丢失。bindingSeckillQueue()通过 BindingBuilder 将队列和交换机绑定在一起并使用 with(SECKILL_ROUTINGKEY) 指定了路由键。这样当消息生产者发送带有 seckill.routingkey 的消息时消息会被路由到 seckill.queue 队列中。 四、如何发送消息 绑定完成后你可以使用 RabbitTemplate 将消息发送到交换机并指定路由键 import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;Service public class SeckillMessageSender {Autowiredprivate RabbitTemplate rabbitTemplate;// 发送秒杀订单消息public void sendSeckillOrderMessage(String message) {rabbitTemplate.convertAndSend(RabbitMQConfig.SECKILL_EXCHANGE, RabbitMQConfig.SECKILL_ROUTINGKEY, message);System.out.println(秒杀消息已发送 message);} }在上面的代码中RabbitTemplate 提供了 convertAndSend 方法将消息发送到 seckill.exchange 交换机并且指定 seckill.routingkey 作为路由键消息最终会被路由到绑定的 seckill.queue 队列。 五、消息接收方如何处理 消费者监听队列消息的服务可以使用 RabbitListener 来监听队列中的消息。例如 import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component;Component public class SeckillMessageReceiver {// 监听秒杀队列RabbitListener(queues RabbitMQConfig.SECKILL_QUEUE)public void receiveMessage(String message) {System.out.println(接收到秒杀消息 message);// 处理消息的逻辑} }六、几种常见的绑定示例 1. 使用 Direct Exchange 进行精确匹配 如果你想要根据路由键的精确匹配来路由消息可以使用 DirectExchange而不是 TopicExchange。 Bean public DirectExchange directExchange() {return new DirectExchange(direct.exchange); }Bean public Binding bindingDirectQueue(Queue seckillQueue, DirectExchange directExchange) {return BindingBuilder.bind(seckillQueue).to(directExchange).with(direct.routingkey); }这种方式下只有当路由键完全匹配 direct.routingkey 时消息才会被路由到对应的队列。 2. 使用 Fanout Exchange 广播消息 如果你想将消息广播到多个队列可以使用 FanoutExchange它会忽略路由键将消息发送到所有绑定的队列。 Bean public FanoutExchange fanoutExchange() {return new FanoutExchange(fanout.exchange); }Bean public Binding bindingFanoutQueue(Queue seckillQueue, FanoutExchange fanoutExchange) {return BindingBuilder.bind(seckillQueue).to(fanoutExchange); }
http://www.hkea.cn/news/14540495/

相关文章:

  • 重庆住房和城乡建设厅网站电子商务网站建设与维护pdf
  • tap自助建站网站的seo方案
  • 东莞建站网站建设产品推广建工网招聘
  • 网站名称图标如何做才能显示简单网页设计作品欣赏
  • 保山市住房和城上建设局网站公司部门分工
  • php网站开发外文翻译wordpress首页内容怎么修改
  • 手机网站是用什么开发的hotnews wordpress
  • 织梦网站密码扬中论坛网官网
  • 什么能建我的网站呢有没有做网页的兼职网站
  • 要怎么做自己的网站视频教学张家口网站建设公司
  • 网站开发需要的技术人员有什么品牌网站设计提案
  • 建设通招标网站网站抽奖模块怎么做
  • 个人网站开发意义不想用原来的网站模板了就用小偷工具采集了一个可是怎么替换
  • 做单页网站需要做什么设计网单
  • 定制网站制作公司怎么样深圳外包网络推广
  • 在线网站备份架设网站需要什么
  • 服务器发布网站学会网站建设三方协议
  • 济南网站哪家做的好joomla 做外贸网站 好的
  • 百度只更新快照不收录网站网页设计素材书
  • 网站做行业认证好处电商网站建设与维护意味着什么
  • 武威网站建设价格上海网站建设优势
  • 做模型的网站有哪些不适合做室内设计的人
  • 创业大赛网站建设dw网页制作教程div
  • 泸州百度做网站联系漯河网做网站
  • 中小企业网站开发韵茵成都注册公司需要什么材料和手续
  • 给公司在百度上做网站猎头公司怎么找
  • 开发软件多少钱一个月seo查询外链
  • 云南网站制作湖南怀化市住房城乡建设局网站
  • 盐城北京网站建设怎么用电脑做网站主机
  • 平面设计网上接单深圳福田网站优化网络营销培训学校