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

十大门户网站有哪些dw制作简单网站

十大门户网站有哪些,dw制作简单网站,男女做那些事免费网站,网站建设策划书格式消息队列RabbitMQ与AMQP协议详解 什么是RabbitMQ RabbitMQ是一个开源的消息队列中间件,基于AMQP(Advanced Message Queuing Protocol)协议实现。它作为一个消息代理(Message Broker),可以接收、存储和转发…

消息队列RabbitMQ与AMQP协议详解

什么是RabbitMQ

RabbitMQ是一个开源的消息队列中间件,基于AMQP(Advanced Message Queuing Protocol)协议实现。它作为一个消息代理(Message Broker),可以接收、存储和转发消息数据,用于解耦系统组件、实现异步通信、流量削峰等场景。

核心概念

消息队列基础

消息队列是一种异步通信模式,允许应用程序通过发送和接收消息进行通信:

  • Producer:消息生产者,负责发送消息到队列
  • Consumer:消息消费者,从队列接收消息并处理
  • Queue:消息队列,存储消息的缓冲区
  • Message:消息内容,包含有效载荷和属性

AMQP协议详解

什么是AMQP

AMQP(Advanced Message Queuing Protocol)是一个开放标准的应用层协议,专为面向消息的中间件设计。

AMQP核心特性

  1. 可互操作性:不同厂商实现的AMQP客户端和服务器可以互相通信
  2. 统一模型:定义了一套完整的消息传递模型
  3. 安全性:支持TLS加密和SASL认证
  4. 可靠性:通过事务或确认机制保证消息传递
  5. 二进制协议:更高效的数据传输

AMQP模型

AMQP 0-9-1模型(RabbitMQ采用的版本)包含以下核心组件:

  • Exchange:接收生产者消息并路由到队列
  • Queue:存储消息的队列
  • Binding:Exchange与Queue之间的链接规则
  • Virtual Host:虚拟隔离空间,包含独立的Exchange、Queue和Binding
  • Channel:连接内的虚拟连接,减少TCP连接开销

Exchange类型

RabbitMQ支持多种Exchange类型,决定消息如何路由:

  1. Direct Exchange:根据精确的routing key匹配
  2. Topic Exchange:根据模式匹配的routing key
  3. Fanout Exchange:广播到所有绑定的队列
  4. Headers Exchange:根据消息头属性匹配

RabbitMQ架构

核心组件

                    +----------------+
Producer ------→    |    Exchange    |    -----→ Queue -----→ Consumer+----------------+↓+----------------+|     Binding    |+----------------+

消息流程

  1. Producer发送消息到Exchange
  2. Exchange根据Binding规则将消息路由到相应的Queue
  3. Queue存储消息直到被Consumer消费
  4. Consumer接收并处理消息

消息确认机制

RabbitMQ提供了多种确认机制确保消息可靠传递:

  1. 生产者确认:Publisher Confirms和Publisher Returns
  2. 消费者确认:Consumer Acknowledgements
  3. 持久化:Exchange、Queue和Message的持久化

实战示例

连接RabbitMQ

ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
factory.setUsername("guest");
factory.setPassword("guest");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();

简单消息发布

// 声明队列
channel.queueDeclare("simple-queue", true, false, false, null);// 发布消息
String message = "Hello RabbitMQ!";
channel.basicPublish("", "simple-queue", MessageProperties.PERSISTENT_TEXT_PLAIN, message.getBytes());

消息消费

// 声明队列
channel.queueDeclare("simple-queue", true, false, false, null);// 创建消费者
DeliverCallback deliverCallback = (consumerTag, delivery) -> {String message = new String(delivery.getBody(), "UTF-8");System.out.println("Received: " + message);// 手动确认消息channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
};// 开始消费消息
channel.basicConsume("simple-queue", false, deliverCallback, consumerTag -> {});

使用Exchange和Binding

// 声明交换机
channel.exchangeDeclare("logs", BuiltinExchangeType.FANOUT);// 创建临时队列
String queueName = channel.queueDeclare().getQueue();// 绑定队列到交换机
channel.queueBind(queueName, "logs", "");// 发布消息到交换机
String message = "Info: This is a log message";
channel.basicPublish("logs", "", null, message.getBytes());

RabbitMQ高级特性

消息优先级

Map<String, Object> args = new HashMap<>();
args.put("x-max-priority", 10);
channel.queueDeclare("priority-queue", true, false, false, args);// 发送优先级消息
AMQP.BasicProperties properties = new AMQP.BasicProperties.Builder().priority(8).build();
channel.basicPublish("", "priority-queue", properties, message.getBytes());

消息TTL(Time-To-Live)

// 设置队列消息TTL
Map<String, Object> args = new HashMap<>();
args.put("x-message-ttl", 60000); // 60秒
channel.queueDeclare("ttl-queue", true, false, false, args);// 设置单个消息TTL
AMQP.BasicProperties properties = new AMQP.BasicProperties.Builder().expiration("10000") // 10秒.build();

死信队列

// 声明死信交换机
channel.exchangeDeclare("dlx", BuiltinExchangeType.DIRECT);// 声明正常队列,并指定死信设置
Map<String, Object> args = new HashMap<>();
args.put("x-dead-letter-exchange", "dlx");
args.put("x-dead-letter-routing-key", "dead");
channel.queueDeclare("normal-queue", true, false, false, args);

AMQP协议帧结构

AMQP是一个二进制协议,由帧(frames)组成:

  1. 帧头:包含帧类型、通道号和帧大小
  2. 帧体:包含实际的命令和数据
  3. 帧结尾:标记帧结束的字节

AMQP主要帧类型:

  • Method帧:包含AMQP命令
  • Header帧:包含消息属性和大小
  • Body帧:包含消息内容
  • Heartbeat帧:用于连接保活

总结

RabbitMQ作为实现AMQP协议的成熟消息中间件,提供了丰富的功能特性满足各种场景需求。AMQP协议的开放标准特性确保了系统的互操作性和可靠性。通过理解RabbitMQ和AMQP的核心概念,可以更好地设计和实现分布式系统中的消息通信模式。

在实际应用中,合理利用RabbitMQ的Exchange类型、队列特性和消息确认机制,可以构建高可用、高可靠的消息系统,实现系统解耦、负载均衡和流量削峰等目标。


文章转载自:

http://cPVAHiRI.dzyxr.cn
http://83nZAJ4z.dzyxr.cn
http://9uPk4sKV.dzyxr.cn
http://8PFHFwJS.dzyxr.cn
http://C6YTKGJQ.dzyxr.cn
http://daFuJWoN.dzyxr.cn
http://4FckltD2.dzyxr.cn
http://MJHcIWHp.dzyxr.cn
http://0TEs7syt.dzyxr.cn
http://aULAb8Sh.dzyxr.cn
http://tP6sGx7e.dzyxr.cn
http://9RxgjGr1.dzyxr.cn
http://KUkt4dTm.dzyxr.cn
http://F3auCgvn.dzyxr.cn
http://qjvXN7eg.dzyxr.cn
http://qlEf67eo.dzyxr.cn
http://nsXSmc5H.dzyxr.cn
http://FE3bsjAs.dzyxr.cn
http://kkOrQqBN.dzyxr.cn
http://uRtr0I1D.dzyxr.cn
http://KjRvpfnZ.dzyxr.cn
http://zIfe4CWb.dzyxr.cn
http://lV1lVf9P.dzyxr.cn
http://GvqfJ0zH.dzyxr.cn
http://FvJHG5HT.dzyxr.cn
http://jOfqzD0v.dzyxr.cn
http://XHFl6dnL.dzyxr.cn
http://ua6RfQrC.dzyxr.cn
http://hMNRFdqF.dzyxr.cn
http://AYuDibIH.dzyxr.cn
http://www.dtcms.com/wzjs/608424.html

相关文章:

  • 如何下载js做的网站wordpress去除版权
  • 万户做网站好不好上海开展扫黄打非专项检查
  • 网站建设实训室介绍国外WordPress小说主题
  • 刷赞网站推广ks设计素材网站有哪些平台
  • 最少的钱怎么做网站建站工具推荐
  • 怎么自己写网站企业网站开发 流程
  • 可以免费做简历的网站网站建设实训心得体会2000字
  • 建设网站免费河南小学网站建设
  • 合肥网站建设公司排名三好街做网站公司
  • 河北省城乡建设培训网官方网站php网站模板制作工具
  • 网站建设与域名备案wordpress 企业展示
  • 网站模版切换网站建设 丽水
  • 北京网站设计联系方式如何优化网站图片大小
  • 众划算网站开发通化网站建设公司
  • 网站域名验证企业宣传册文案范文
  • element ui页面模板优化落实新十条措施
  • 庆阳定制网站宣传片制作拍摄
  • 域名网站怎么打开中国建设报社门户网站
  • php完整网站开发案例东莞公司高端网站建设
  • 2018年静安区品牌网站建设如何破解网站后台
  • 深圳龙华住房和建设局网站门户网站注意事项
  • 我想建网站如何查看网站架构
  • 阿里云网站301重定向怎么做网站图标文件下载
  • 网站推广注意事项网站建设jiage
  • 网站建设300元营销型门户网站
  • 计科专业毕设做网站网站建设捌金手指花总二
  • 做好网站外链建设的最新方法苏州网上商城搭建
  • 网站换一家做还用备案么js检测网站是否能打开
  • 制作一个企业网站多少钱可以免费生成网站的软件
  • 给朋友做的相册网站没有了企业邮箱是多少怎么查