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

母婴网站源码dede网络营销公司做得比较好的

母婴网站源码dede,网络营销公司做得比较好的,虚拟主机wordpress解压位置,网络运营者不得违反法律前言 在现代微服务架构中,消息队列(Message Queue)是实现异步通信、解耦系统组件的重要工具。RabbitMQ 是一个流行的消息中间件,支持多种消息协议,具有高可靠性和可扩展性。 本博客将详细介绍如何在 Spring Boot 项目…

前言

在现代微服务架构中,消息队列(Message Queue)是实现异步通信、解耦系统组件的重要工具。RabbitMQ 是一个流行的消息中间件,支持多种消息协议,具有高可靠性和可扩展性。

本博客将详细介绍如何在 Spring Boot 项目中集成 RabbitMQ,包括配置、发送和接收消息的基本流程,并介绍如何通过 两种方式定义交换机(Exchange)与队列(Queue):一种是在生产者端手动声明,另一种是在消费者端通过注解自动绑定。

准备工作

1. 安装 RabbitMQ

可以通过 Docker 快速安装 RabbitMQ:

docker run -d --hostname my-rabbit --name rabbitmq \-p 5672:5672 -p 15672:15672 \rabbitmq:3-management
  • 5672:AMQP 协议端口
  • 15672:RabbitMQ 管理界面端口

访问管理界面:http://localhost:15672
默认账号密码:guest / guest


2. 消息发送者(Producer)配置

1. 创建 Spring Boot 项目

使用 Spring Initializr 或 IDE 的新建项目向导来创建一个新的 Spring Boot 项目,确保添加以下依赖:

  • Spring Web
  • Spring AMQP

2. 配置 RabbitMQ 连接信息

application.yml 中配置 RabbitMQ 的连接参数:

spring:rabbitmq:host: localhostport: 5672username: guestpassword: guest

3. 编写消息发送逻辑

创建一个简单的 REST 控制器来触发消息发送:

@RestController
@RequestMapping("/api/producer")
public class ProducerController {@Autowiredprivate AmqpTemplate amqpTemplate;@GetMapping("/send")public String sendMessage(@RequestParam String message) {amqpTemplate.convertAndSend("my.queue", message);return "Message sent: " + message;}
}

注意:这种方式适用于直接发送到队列的情况,但在实际项目中我们通常会通过 Exchange 来路由消息。


3. 使用 Exchange 的两种方式

在 RabbitMQ 中,消息的流向是:Producer → Exchange → Queue → Consumer。因此,定义 Exchange 和 Queue 并进行绑定是非常关键的步骤。

下面介绍两种常见的定义方式:

方式一:在生产者端手动声明 Exchange、Queue 和 Binding

示例:Direct Exchange
1. 配置类定义 Exchange、Queue 及其绑定关系
@Configuration
public class RabbitMQConfig {@Beanpublic DirectExchange myDirectExchange() {return new DirectExchange("my.direct.exchange");}@Beanpublic Queue myDirectQueue() {return new Queue("my.direct.queue");}@Beanpublic Binding bindingDirectQueueToExchange(Queue myDirectQueue, DirectExchange myDirectExchange) {return BindingBuilderSupport.bind(myDirectQueue).to(myDirectExchange).with("direct.key").noargs();}
}
2. 发送消息时指定 Exchange 和 Routing Key
amqpTemplate.convertAndSend("my.direct.exchange", "direct.key", message);

这种方式适合需要精细控制队列和交换机的场景,如多服务协同、复杂路由等。


方式二:在消费者端通过注解自动声明 Exchange、Queue 并绑定

Spring 提供了强大的注解功能,可以在消费者监听方法上直接声明 Exchange、Queue 和绑定关系,无需额外的配置类。

示例:使用 @RabbitListener 注解绑定
@Component
public class ConsumerListener {@RabbitListener(bindings = @QueueBinding(value = @Queue(value = "my.annotation.queue", durable = "true"),exchange = @Exchange(value = "my.annotation.exchange", type = "direct", durable = "true"),key = "annotation.key"))public void receive(String message) {System.out.println("【消费者】收到消息:" + message);}
}

优点:开发更高效,特别适合快速搭建原型或小型项目。

注意事项

  • 此方式只在消费者端有效;
  • 如果已有 Exchange 或 Queue 与注解配置不一致,可能会抛出异常;
  • 建议设置 durable = "true" 实现持久化。

4. 消息消费者(Consumer)配置

1. 创建 Spring Boot 项目

同样地,创建一个新的 Spring Boot 项目,这次只需要添加 Spring AMQP 依赖。

2. 配置 RabbitMQ 连接信息

与生产者的配置相同,在 application.yml 中配置 RabbitMQ 的连接参数。

3. 创建队列并编写消息接收逻辑

方法一:手动定义队列(推荐用于简单场景)
@Configuration
public class RabbitMQConfig {@Beanpublic Queue myQueue() {return new Queue("my.queue");}
}
方法二:使用 @RabbitListener 自动绑定(详见上文)
消息监听器
@Component
public class ConsumerListener {@RabbitListener(queues = "my.queue")public void receive(String message) {System.out.println("Received message: " + message);}
}

注意事项

  • 队列名称一致性:确保生产者和消费者的队列名称一致,这样它们才能正确通信。
  • 网络连通性:如果生产者和消费者运行在不同的机器上,请确保这些机器之间能够通过网络访问 RabbitMQ 服务器,并根据需要调整主机名或 IP 地址。
  • 并发处理:考虑在消费者端配置并发消费者以提高消息处理效率。
  • 幂等性与容错机制:建议开启确认机制(ACK/NACK),避免消息丢失或重复消费。

总结

通过以上步骤,我们就可以拥有两个独立的 Spring Boot 应用程序:一个用于发送消息,另一个用于消费消息。这种方式非常适合构建基于消息队列的分布式系统。

同时,也了解了两种定义 Exchange、Queue 及其绑定关系 的方式:

方式适用场景特点
生产者手动声明多服务协作、复杂路由控制精细,结构清晰
消费者注解绑定快速开发、轻量级项目开发效率高,但仅限于消费者端

文章转载自:

http://nJ3aObcG.sfyqs.cn
http://WrOIpiYt.sfyqs.cn
http://MIpDvuMG.sfyqs.cn
http://fsJRrGoF.sfyqs.cn
http://G3R0n7Cl.sfyqs.cn
http://7BbnrQ6F.sfyqs.cn
http://xx1GdyAh.sfyqs.cn
http://aHotEHz0.sfyqs.cn
http://xqTahnSJ.sfyqs.cn
http://s6Lt6l3q.sfyqs.cn
http://w3wvNbzx.sfyqs.cn
http://iYVtPA6L.sfyqs.cn
http://AsXkk2uR.sfyqs.cn
http://nktDmJAv.sfyqs.cn
http://ypKbSx9p.sfyqs.cn
http://GK22Rnb1.sfyqs.cn
http://EGnNgF90.sfyqs.cn
http://T1cxbbgK.sfyqs.cn
http://uxw92EjB.sfyqs.cn
http://5MpDrfWm.sfyqs.cn
http://T4xtXriO.sfyqs.cn
http://9Jw6UqwP.sfyqs.cn
http://Ur3UFjLO.sfyqs.cn
http://goNMfuPn.sfyqs.cn
http://wsEbalQa.sfyqs.cn
http://qI2ZJcYk.sfyqs.cn
http://Q0dL2B05.sfyqs.cn
http://MzhJQuwT.sfyqs.cn
http://mxmECLko.sfyqs.cn
http://hjUcawOg.sfyqs.cn
http://www.dtcms.com/wzjs/698435.html

相关文章:

  • 小学生做网站步骤为什么网络经营者要有自己的网站
  • 从零开始学ui设计seo优化软件哪个好
  • 网站后台可视化编辑wordpress角色
  • 红酒网站源码网站三元素怎么做
  • 全球搜索网站排名网站多语言包
  • 仿京东电商的网站开发报价做局域网网站
  • 校园网站建设建议视频网站怎么建设
  • 个人建网站需要多少钱盐城优化办
  • 网上做翻译兼职网站制作网站赚钱吗
  • 自己怎么注册一个网站在线文字编辑器
  • 西安做公司网站的公司南宁网站快
  • 乡村旅游网站建设的意义做棋盘游戏辅助的网站
  • 全球设计网站排行泰兴企业网站建设
  • 深圳微商城网站设计制作移动通网站建设
  • 帝国cms建站实例教程响应式模板网站建设哪家好
  • 网站空间服务商app 开发
  • 品牌网站排名软件wordpress 十万
  • 杭州公司注销网站备案国外网站 网站 推荐
  • 怎么收录网站福田公司怎么样
  • 网站建设行业分析建设网站工作报告
  • 玉树电子商务网站建设哪家快咸宁市网站建设
  • 网站服务器和网站备案在服务器上运行wordpress
  • 东莞网站建设总结推介网手机版
  • wordpress 电影下载站天津网站搜索排名
  • iis网站连接数西部数码做跳转网站
  • 重庆餐饮品牌策划公司厦门seo外包公司
  • 网站功能简介网页网站建设软件有哪些
  • 东莞中英文网站建设河北seo技术
  • 华夏业务员做单的网站毕业设计动漫网页设计
  • 如何选择做pc端网站企业vi设计与网站开发