万网网站建设方案书,网站如何做网站解析,有哪些程序做的网站,企业网站推广的方法有哪几种消息的TTL#xff08;Time To Live#xff09;
消息的TTL就是消息的存活时间。
• RabbitMQ可以对队列和消息分别设置TTL。 • 对队列设置就是队列没有消费者连着的保留时间#xff0c;也可以对每一个单独的消息做单独的 设置。超过了这个时间#xff0c;我们认为这个消息…消息的TTLTime To Live
消息的TTL就是消息的存活时间。
• RabbitMQ可以对队列和消息分别设置TTL。 • 对队列设置就是队列没有消费者连着的保留时间也可以对每一个单独的消息做单独的 设置。超过了这个时间我们认为这个消息就死了称之为死信。 • 如果队列设置了消息也设置了那么会取小的。所以一个消息如果被路由到不同的队 列中这个消息死亡的时间有可能不一样不同的队列设置。这里单讲单个消息的TTL因为它才是实现延迟任务的关键。可以通过设置消息的expiration字段或者x- message-ttl属性来设置时间两者是一样的效果。 RabbitMQ运行机制
AMQP 中的消息路由 • AMQP 中消息的路由过程和 Java 开 发者熟悉的 JMS 存在一些差别 AMQP 中增加了 Exchange 和 Binding 的角色。生产者把消息发布 到 Exchange 上消息最终到达队列 并被消费者接收而 Binding 决定交 换器的消息应该发送到那个队列。 Exchange 类型
Exchange分发消息时根据类型的不同分发策略有区别目前共四种类型direct、fanout、topic、headers 。headers 匹配 AMQP 消息的 header 而不是路由键 headers 交换器和 direct 交换器完全一致但性能差很多目前几乎用不到了所以直接 看另外三种类型 消息中的路由键routing key如果和 Binding 中的 binding key 一致 交换器 就将消息发到对应的队列中。路由键与队 列名完全匹配如果一个队列绑定到交换 机要求路由键为“dog”则只转发 routing key 标记为“dog”的消息不会转发 “dog.puppy”也不会转发“dog.guard”等等。它是完全匹配、单播的模式。 每个发到 fanout 类型交换器的消息都会分到所有绑定的队列上去。fanout 交换器不处理路由键只是简单的将队列绑定到交换器上每个发送到交换器的消息都会被转发到与该交换器绑定的所有队列上。很像子网广播每台子网内的主机都获得了一份复制的消息。fanout 类型转发消息是最快的。 topic 交换器通过模式匹配分配消息的路由键属性将路由键和某个模式进行匹配此时队列需要绑定到一个模式上。它将路由键和绑定键的字符串切分成单词这些单词之间用点隔开。它同样也会识别两个通配符符号“#”和符号“*”。#匹配0个或多个单词*匹配一个单词。 Docker安装RabbitMQ
docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 rabbitmq:management 4369, 25672 (Erlang发现集群端口) 5672, 5671 (AMQP端口) 15672 (web管理后台端口) 61613, 61614 (STOMP协议端口) 1883, 8883 (MQTT协议端口) https://www.rabbitmq.com/networking.html