如何免费创建母婴网站?

摘要:免费做网站哪里有,母婴网站这么做,wordpress 用户 评论,wordpress 默认图片路径1、RabbitMQ简介 RabbitMQ 是采用 Erlang 语言实现 AMQP(Advanced Message Queuing Pro
免费做网站哪里有,母婴网站这么做,wordpress 用户 评论,wordpress 默认图片路径1、RabbitMQ简介 RabbitMQ 是采用 Erlang 语言实现 AMQP(Advanced Message Queuing Protocol#xff0c;高级消息队列协议#xff09;的消息中间件 2、RabbitMQ核心概念 RabbitMQ 整体上是一个生产者与消费者模型#xff0c;主要负责接收、存储和转发消息 3、Producer和…1、RabbitMQ简介 RabbitMQ 是采用 Erlang 语言实现 AMQP(Advanced Message Queuing Protocol高级消息队列协议的消息中间件 2、RabbitMQ核心概念 RabbitMQ 整体上是一个生产者与消费者模型主要负责接收、存储和转发消息 3、Producer和Consumer Producer(生产者) :生产消息的一方消息一般包含两个部分消息体payload)和标签(Label)Consumer(消费者) :消费消息的一方消费者连接到 RabbitMQ 服务器并订阅到队列上。消费消息时只消费消息体丢弃标签生产者把消息交由 RabbitMQ 后RabbitMQ 会根据消息头把消息发送给感兴趣的 Consumer(消费者) 4、Exchange交换器 在 RabbitMQ 中消息并不是直接被投递到 Queue(消息队列) 中的中间还必须经过 Exchange(交换器) 这一层Exchange(交换器) 会把我们的消息分配到对应的 Queue(消息队列) 中生产者将消息发给交换器的时候一般会指定一个 RoutingKey(路由键)用来指定这个消息的路由规则而这个 RoutingKey 需要与交换器类型和绑定键(BindingKey)联合使用才能最终生效RabbitMQ 中通过 Binding(绑定) 将 Exchange(交换器) 与 Queue(消息队列) 关联起来在绑定的时候一般会指定一个 BindingKey(绑定建) ,这样 RabbitMQ 就知道如何正确将消息路由到队列了一个绑定就是基于路由键将交换器和消息队列连接起来的路由规则所以可以将交换器理解成一个由绑定构成的路由表 5、Queue消息队列 Queue(消息队列) 用来保存消息直到发送给消费者。它是消息的容器也是消息的终点。一个消息可投入一个或多个队列。消息一直在队列里面等待消费者连接到这个队列将其取走多个消费者可以订阅同一个队列这时队列中的消息会被平均分摊Round-Robin即轮询给多个消费者进行处理而不是每个消费者都收到所有的消息并处理这样避免消息被重复消费RabbitMQ 不支持队列层面的广播消费,如果有广播消费的需求需要在其上进行二次开发,这样会很麻烦不建议这样做 6、Broker消息中间件的服务节点 对于 RabbitMQ 来说一个 RabbitMQ Broker 可以简单地看作一个 RabbitMQ 服务节点或者RabbitMQ服务实例就像下面这样 7、Exchange Types交换器类型 1、fanout它会把所有发送到该Exchange的消息路由到所有与它绑定的Queue中不需要做任何判断操作所以 fanout 类型是所有的交换机类型里面速度最快的。fanout 类型常用来广播消息 2、direct它会把消息路由到那些 Bindingkey 与 RoutingKey 完全匹配的 Queue 中 3、topic它与 direct 类型的交换器相似也是将消息路由到 BindingKey 和 RoutingKey 相匹配的队列中但这里的匹配规则有些不同 RoutingKey 为一个点号“”分隔的字符串被点号“”分隔开的每一段独立的字符串称为一个单词如 “com.rabbitmq.client”、“java.util.concurrent”、“com.hidden.client”;BindingKey 和 RoutingKey 一样也是点号“”分隔的字符串BindingKey 中可以存在两种特殊字符串“”和“#”用于做模糊匹配其中“”用于匹配一个单词“#”用于匹配多个单词(可以是零个) 4、headers不推荐headers 类型的交换器不依赖于路由键的匹配规则来路由消息而是根据发送的消息内容中的 headers 属性进行匹配 8、高级特性 1、死信队列 DLX全称为 Dead-Letter-Exchange死信交换器死信邮箱。当消息在一个队列中变成死信 (dead message) 之后它能被重新被发送到另一个交换器中这个交换器就是 DLX绑定 DLX 的队列就称之为死信队列导致死信的几个原因消息被拒且 requeue false消息 TTL 过期队列满了无法再添加 2、延迟队列 延迟队列指的是存储对应的延迟消息消息被发送以后并不想让消费者立刻拿到消息而是等待特定时间后消费者才能拿到这个消息进行消费AMQP 协议以及RabbitMQ本身没有直接支持延迟队列的功能但是可以通过TTL和DLX模拟出延迟队列的功能 3、过期时间 Time To Live也就是生存时间是一条消息在队列中的最大存活时间单位是毫秒RabbitMQ可以对消息和队列设置TTL 4、消息确认 为了保证消息从队列可靠地到达消费者RabbitMQ提供了消息确认机制消费者订阅队列的时候可以指定autoAck参数当autoAck为true的时候RabbitMQ采用自动确认模式RabbitMQ自动把发送出去的消息设置为确认然后从内存或者硬盘中删除而不管消费者是否真正消费到了这些消息当autoAck为false的时候RabbitMQ会等待消费者回复的确认信号收到确认信号之后才从内存或者磁盘中删除消息 5、持久化 持久化可以防止在异常情况下丢失数据。RabbitMQ的持久化分为三个部分交换器持久化、队列持久化和消息的持久化。交换器持久化可以通过在声明队列时将durable参数设置为true。如果交换器不设置持久化那么在RabbitMQ服务重启之后相关的交换器元数据会丢失不过消息不会丢失只是不能将消息发送到这个交换器了队列的持久化能保证其本身的元数据不会因异常情况而丢失但是不能保证内部所存储的消息不会丢失。要确保消息不会丢失需要将其设置为持久化。队列的持久化可以通过在声明队列时将durable参数设置为true设置了队列和消息的持久化当RabbitMQ服务重启之后消息依然存在。如果只设置队列持久化或者消息持久化重启之后消息都会消失 9、RabbitMQ的五种队列模式 简单模式一个生产者对应一个消费者Work模式一个生产者对应多个消费者但是只能有一个消费者获得消息排他发布/订阅模式一个消费者将消息首先发送到fanout交换器交换器绑定到多个队列然后与之对应的所有消费者都能接收到消息不排他路由模式生产者将消息发送到direct交换器交换器按照关键字Key把消息路由到某个队列主题模式生产者将消息发送到Topic交换器交换器按照复杂的规则把消息路由到某个队列 10、Channel信道 由于 TCP 链接的创建和销毁开销较大且并发数受系统资源限制会造成性能瓶颈所以 RabbitMQ 使用信道的方式来传输数据信道Channel是生产者、消费者与 RabbitMQ 通信的渠道信道是建立在 TCP 链接上的虚拟链接且每条 TCP 链接上的信道数量没有限制就是说 RabbitMQ 在一条 TCP 链接上建立成百上千个信道来达到多个线程处理这个 TCP 被多个线程共享每个信道在 RabbitMQ 都有唯一的 ID保证了信道私有性每个信道对应一个线程使用