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

做百科需要用什么网站做参考网站开发哪里接到单子的

做百科需要用什么网站做参考,网站开发哪里接到单子的,红河优才网站建设,企业做网站公司哪家好RabbitMQ 作为一款高性能的消息中间件,在分布式系统中广泛应用。Spring Boot 通过 spring-boot-starter-amqp 提供了对 RabbitMQ 的无缝集成,开发者可以借助注解快速声明队列、交换机及绑定规则,极大简化了配置流程。本文将通过代码示例和原理…

RabbitMQ 作为一款高性能的消息中间件,在分布式系统中广泛应用。Spring Boot 通过 spring-boot-starter-amqp 提供了对 RabbitMQ 的无缝集成,开发者可以借助注解快速声明队列、交换机及绑定规则,极大简化了配置流程。本文将通过代码示例和原理分析,详细介绍如何用注解实现 RabbitMQ 的集成,并深入解析交换机的作用与类型。


一、环境准备
1. 添加依赖

pom.xml 中引入 Spring Boot 的 AMQP 依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2. 配置 RabbitMQ 连接

application.yml 中配置 RabbitMQ 连接信息:

spring:rabbitmq:host: localhostport: 5672username: guestpassword: guestvirtual-host: /

二、注解声明队列与交换机

Spring Boot 提供 @Configuration@Bean 注解来声明队列、交换机及绑定关系,同时也支持 @RabbitListener 简化消费者监听逻辑。

1. 声明队列与交换机

创建配置类 RabbitMQConfig.java

import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class RabbitMQConfig {// 声明 Direct 交换机@Beanpublic DirectExchange directExchange() {return new DirectExchange("direct.exchange");}// 声明队列@Beanpublic Queue demoQueue() {return new Queue("demo.queue", true); // 持久化队列}// 绑定队列到交换机,并指定路由键@Beanpublic Binding binding(Queue demoQueue, DirectExchange directExchange) {return BindingBuilder.bind(demoQueue).to(directExchange).with("demo.routing.key");}
}
2. 生产者发送消息

通过 RabbitTemplate 发送消息到交换机:

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class MessageProducer {@Autowiredprivate RabbitTemplate rabbitTemplate;public void sendMessage(String message) {// 发送到交换机,指定路由键rabbitTemplate.convertAndSend("direct.exchange", "demo.routing.key", message);}
}
3. 消费者监听消息

使用 @RabbitListener 注解监听队列:

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;@Component
public class MessageConsumer {@RabbitListener(queues = "demo.queue")public void handleMessage(String message) {System.out.println("Received message: " + message);}
}

三、交换机(Exchange)详解
1. 交换机的作用

交换机是消息路由的核心组件,负责根据 路由规则 将生产者发送的消息分发到队列。其行为由 交换机类型绑定规则(Binding) 共同决定。

2. 常见交换机类型
交换机类型路由规则适用场景
Direct精确匹配 Routing KeyBinding Key一对一精准路由(如订单状态更新)。
Topic支持通配符 *(匹配一个词)和 #(匹配零或多个词)。多维度分类消息(如日志分级)。
Fanout忽略 Routing Key,广播到所有绑定队列。群发通知(如系统公告)。
Headers通过消息头(Headers)的键值对匹配,而非 Routing Key复杂条件路由(较少使用)。
3. 示例:Topic 交换机配置
@Configuration
public class TopicExchangeConfig {@Beanpublic TopicExchange topicExchange() {return new TopicExchange("topic.exchange");}@Beanpublic Queue topicQueue1() {return new Queue("topic.queue1");}@Beanpublic Queue topicQueue2() {return new Queue("topic.queue2");}@Beanpublic Binding binding1(TopicExchange topicExchange, Queue topicQueue1) {// 路由键格式:order.* 匹配 order.create、order.pay 等return BindingBuilder.bind(topicQueue1).to(topicExchange).with("order.*");}@Beanpublic Binding binding2(TopicExchange topicExchange, Queue topicQueue2) {// 路由键格式:order.# 匹配 order.create.success、order.pay.failed 等return BindingBuilder.bind(topicQueue2).to(topicExchange).with("order.#");}
}

四、高级特性:消息确认与持久化
1. 生产者确认(Publisher Confirm)

application.yml 中启用确认机制:

spring:rabbitmq:publisher-confirm-type: correlated # 异步确认publisher-returns: true
2. 消费者手动 ACK

修改消费者监听逻辑,手动确认消息:

@RabbitListener(queues = "demo.queue")
public void handleMessage(String message, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag) {try {System.out.println("Received message: " + message);channel.basicAck(tag, false); // 手动确认} catch (IOException e) {channel.basicNack(tag, false, true); // 拒绝并重新入队}
}
3. 消息持久化

在声明队列和交换机时启用持久化:

@Bean
public Queue durableQueue() {return new Queue("durable.queue", true, true, false); // 参数:名称、持久化、独占、自动删除
}@Bean
public DirectExchange durableExchange() {return new DirectExchange("durable.exchange", true, false); // 参数:名称、持久化、自动删除
}

五、总结

通过 Spring Boot 整合 RabbitMQ,开发者可以快速实现消息队列的声明、消息的发送与消费。核心步骤包括:

  1. 依赖配置:引入 spring-boot-starter-amqp 并配置连接信息。
  2. 注解声明:使用 @Bean 定义队列、交换机及绑定规则。
  3. 生产者与消费者:通过 RabbitTemplate 发送消息,@RabbitListener 监听队列。
  4. 交换机路由:根据业务需求选择合适的交换机类型(如 Direct、Topic)。

实际开发中,可结合消息确认、持久化等机制提升系统可靠性。理解交换机的路由规则是设计高效消息系统的关键,例如:

  • Direct Exchange 适合精准路由。
  • Topic Exchange 支持灵活的多级路由。
  • Fanout Exchange 用于广播场景。
http://www.dtcms.com/wzjs/795211.html

相关文章:

  • 郑州东区网站建设网页创建网站
  • 取消网站备案流程珠海市公共资源交易中心
  • 网站制作用什么如何做网络营销方案
  • 网站交互主要做什么怎么制作婚介网站
  • 企业网站建设多少家网站策划包括什么
  • 三明市住房和城乡建设局网站专注网站建设怎么样
  • 用什么做网站好怎么做游戏测评视频网站
  • 网站多服务器建设自助云商城
  • cms网站是什么意思浙江品牌网站建设
  • 专门做音效的网站纺织服装网站建设规划方案
  • 站内推广的主要目的是重庆网站目录
  • 免费数据库网站wordpress html5模板
  • 建设银行浙江网站saas网站建设
  • 金种子酒业网站建设网站建设项目收获
  • 讯美深圳网站建设免费企业官网怎么做
  • 房管局网站建设方案自己怎么开电商平台
  • 如何查看一个网站的访问量自建站服务
  • 宁波建站公司哪家服务好北京景网站建设
  • 网站收录不稳定互联网公司排名中国2022
  • 免费做网站哪个好网站建设规划方案
  • 兰州忠旗网站建设科技有限公司百度关键词排名十大排名
  • 怎样做网站的seo安徽省建设工程质量与安全协会官网
  • 做网站分前台后端吗企业建设网站公司简介
  • 橙色网站logo 配色什么叫域名什么是域名
  • 网站的后缀长沙市设计网站公司
  • 上传网站程序是什么传媒公司
  • 网站图标 psd互联网推广方法
  • 徐州cms模板建站商城网站建设合同书
  • 营销类网站有哪些在手机怎样使用wordpress
  • 淮北哪些企业做网站阿里巴巴网站威海哪里做?