
java
爱在拜城_sunbea
一个比较有style的程序猿
展开
-
RabbitMq流控
简述: 流控机制是用来避免消息的发送速率过快而导致服务器难以支撑的情形。内存和磁盘警告相当于全局的流控,一旦触发会阻塞集群中所有的Connection,而本节的流程是针对单个Connection的. 原理: 1.Erlang进程之间并不共享内存(binary类型的除外),而是通过消息传递来通信,每个进程都有自己的进程邮箱。 2.默认情况下,Erlang并没有对进程邮箱的大小进程限制,...原创 2019-10-15 15:43:43 · 532 阅读 · 1 评论 -
RabbitMq内存以及磁盘警告
内存: 1.当内存使用超过配置的阈值或者磁盘剩余空间低于配置的阈值时,RabbitMq都会暂时阻塞(block)客户端的连接(Connection)并停止接收从客户端发来的消息,以此避免服务崩溃。与此同时,客户端与服务端的心跳检测也会失效。 2.被阻塞的Connection状态要么是blocking,要么是blocked。前者对应并不试图发消息的Connection,比如消费者关联的Conne...原创 2019-10-15 15:39:53 · 916 阅读 · 0 评论 -
RabbitMq惰性队列
应用场景: 1.需要支持更多的消息存储 2.消费者由于各种各样的原因(如消费者下线、宕机或者由于维护而关闭等等)导致长时间不能消费消息而造成堆积时 重要概念: 1.惰性队列会尽可能地将消息存入磁盘中,消费者消费到对应的消息时才会被加载到内存中 2.惰性队列会将接受到的消息直接存入文件系统中,而不管是持久化的或者是非持久化的,这样可以减少了内存的消耗,但是会增加I/O...原创 2019-10-15 15:39:25 · 481 阅读 · 0 评论 -
RabbitMq存储机制
1.不管是持久化的消息还是非持久化的消息都可以被写入到磁盘。 2.持久化的消息在到达队列时就被写入到磁盘,并且如果可以,持久化的消息也会在内存中保存一份备份,这样可以提高一定的性能,当内存吃紧的时候会从内存中清除。 3.非持久化的消息一般只保存在内存中,在内存吃紧的时候会被换入到磁盘中,以节省内存空间。 4.这两种类型的消息的落盘处理都在RabbitMq的“持久层”中完成。 持久层 ...原创 2019-10-15 15:38:12 · 693 阅读 · 0 评论 -
RabbitMq交换器和队列
注:生产者和消费者都可以声明一个交换器。如果尝试声明一个已经存在的交换器或者队列,只要声明的参数完全匹配现存的交换器或队列,RabbitMq就可以声明都不做,并成功返回。如果声明的参数不匹配则会抛出异常。 exchangeDeclare() exchange:交换器 type:交换器的类型,常见的如fanout、direct、topic durable:设置是否持久化,true表示持...原创 2019-10-15 15:29:03 · 288 阅读 · 0 评论 -
RabbitMq创建生产者和消费者例子
生产者 package com.ly.liyong.rabbitmq; import com.rabbitmq.client.*; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; import java...原创 2019-10-15 15:27:39 · 690 阅读 · 0 评论 -
rabbitMq信道(channel)
1.与Rabbitmq Broker建立连接,这连接就是一个TCP连接,也就是connection. 2.建立TCP连接后,客户端可以创建一个AMQP信道(Channel),每个信道都会被指派一个唯一的ID。信道是建立在Connection之上的虚拟连接,RabbitMq处理的每条AMQP指令都是通过信道完成的。 3.Connection可以创建多个Channel实例,但是Channel实例不...原创 2019-10-15 15:24:11 · 4029 阅读 · 0 评论