非持久化化消息存储

正常情况下,非持久化消息是存储在内存中的,持久化消息是存储在文件中的。能够存储的最大消息数据在${PMQ_HOME}/conf/pmq.xml文件中的systemUsage节点,SystemUsage配置设置了一些系统内存和硬盘容量。

<systemUsage> 
  <systemUsage> 
    <memoryUsage> 
      <!--
      设置整个Primeton MQ节点的“可用内存限制”。
      这个值不能超过Primeton MQ本身设置的最大内存大小。
      其中的percentOfJvmHeap属性表示百分比。占用70%的堆内存-->
      <memoryUsage percentOfJvmHeap="70" /> 
    </memoryUsage> 
    <storeUsage> 
      <!--  
      该标记设置整个Primeton MQ节点,用于存储“持久化消息”的“可用磁盘空间”。
      该子标记的limit属性必须要进行设置--> 
      <storeUsage limit="100 gb"/> 
    </storeUsage> 
    <tempUsage> 
      <!--  
      一旦Primeton MQ服务节点存储的消息达到了memoryUsage的限制,
      非持久化消息就会被转储到temp store区域,
      虽然非持久化消息不进行持久化存储,但是Primeton MQ为了防止“数据洪峰”
      出现时非持久化消息大量堆积致使内存耗尽的情况出现,
      还是会将非持久化消息写入到磁盘的临时区域——temp store。
      这个子标记就是为了设置这个temp store区域的“可用磁盘空间限制”
      --> 
      <tempUsage limit="50 gb"/> 
    </tempUsage> 
  </systemUsage> 
</systemUsage>

​ 从上面的配置一个结论,当非持久化消息堆积到一定程度的时候,也就是内存超过指定的设置阀值时,Primeton MQ会将内存中的非持久化消息写入到临时文件,以便腾出内存。但是它和持久化消息的区别是,重启之后,持久化消息会从文件中恢复,非持久化的临时文件会直接删除。

results matching ""

    No results matching ""