-
如何保证消息不丢失?
生产者丢失消息:如网络传输中丢失消息、MQ 发生异常未成功接收消息等情况。 解决办法:主流的 MQ 都有确认或事务机制,可以保证生产者将消息送达到 MQ。如 RabbitMQ 就有事务模式和 confirm 模式。MQ 丢失消息:MQ....- 盾给网
- 0
- 0
- 707
-
如何保证消息不被重复消费?
消息被重复消费,就是消费方多次接受到了同一条消息。根本原因就是,第一次消费完之后,消费方给 MQ 确认已消费的反馈,MQ 没有成功接受。比如网络原因、MQ 重启等。所以 MQ 是无法保证消息不被重复消费的,只能业....- 盾给网
- 0
- 0
- 793
-
-
MQ 有哪些使用场景?
异步处理:用户注册后,发送注册邮件和注册短信。用户注册完成后,提交任务到 MQ,发送模块并行获取 MQ 中的任务。系统解耦:比如用注册完成,再加一个发送微信通知。只需要新增发送微信消息模块,从 MQ 中读取任务....- 盾给网
- 0
- 0
- 509
-
你了解哪些常用的 MQ?
ActiveMQ:支持万级的吞吐量,较成熟完善;官方更新迭代较少,社区的活跃度不是很高,有消息丢失的情况。RabbitMQ:延时低,微妙级延时,社区活跃度高,bug 修复及时,而且提供了很友善的后台界面;用 Erlang 语言....- 盾给网
- 0
- 0
- 491
-
使用 MQ 的缺陷有哪些?
系统可用性降低:以前只要担心系统的问题,现在还要考虑 MQ 挂掉的问题,MQ 挂掉,所关联的系统都会无法提供服务。系统复杂性变高:要考虑消息丢失、消息重复消费等问题。一致性问题:多个 MQ 消费系统,部分成功,....- 盾给网
- 0
- 0
- 501
-
MQ 是什么?为什么使用?
MQ(Message Queue)消息队列,是 "先进先出" 的一种数据结构。MQ 的作用:一般用来解决应用解耦,异步处理,流量削峰等问题,实现高性能,高可用,可伸缩和最终一致性架构。应用解耦:当 A 系统生产关键....- 盾给网
- 0
- 0
- 552
-
方法区内存溢出怎么处理?
在 Java 虚拟机中,方法区是可供各线程共享的运行时内存区域。在不同的 JDK 版本中,方法区中存储的数据是不一样的:JDK 1.7 之前的版本,运行时常量池是方法区的一个部分,同时方法区里面存储了类的元数据信息、静....- 盾给网
- 0
- 0
- 538
-
对象创建过程是什么样的?
对象在 JVM 中的创建过程如下:JVM 会先去方法区找有没有所创建对象的类存在,有就可以创建对象了,没有则把该类加载到方法区在创建类的对象时,首先会先去堆内存中分配空间当空间分配完后,加载对象中所有的非静态....- 盾给网
- 0
- 0
- 501
-
Java中类加载过程是什么样的?
类加载的步骤为,加载 -> 验证 -> 准备 -> 解析 -> 初始化。1、加载:获取类的二进制字节流将字节流代表的静态存储结构转化为方法区运行时数据结构在堆中生成class字节码对象2、验证:连接过程的第一步....- 盾给网
- 0
- 0
- 525
-
简单介绍下Java中垃圾回收机制
什么样的对象会被当做垃圾回收?当一个对象的地址没有变量去引用时,该对象就会成为垃圾对象,垃圾回收器在空闲的时候会对其进行内存清理回收如何检验对象是否被回收?可以重写 Object 类中的 finalize 方法,这个....- 盾给网
- 0
- 0
- 458
-
JVM中有哪几块内存空间?
JVM 中的内存空间包括:程序计数器:可以看作是当前线程所执行的字节码文件(class)的行号指示器,它会记录执行痕迹,是每个线程私有的方法区:主要存储已被虚拟机加载的类的信息、常量、静态变量和即时编译器编译....- 盾给网
- 0
- 0
- 456
-
JDK8为什么要使用元空间取代永久代?
原因如下:字符串存在永久代中,容易出现性能问题和内存溢出类及方法的信息等比较难确定其大小,因此对于永久代的大小指定比较困难,太小容易出现永久代溢出,太大则容易导致老年代溢出永久代会为 GC 带来不必要的....- 盾给网
- 0
- 0
- 610
-
说一说你了解的Java内存区域
Java 虚拟机在执行 Java 程序的过程中会把他所管理的内存划分为若干个不同的数据区域。Java 虚拟机规范将 JVM 所管理的内存分为以下几个运行时数据区:程序计数器Java 虚拟机栈本地方法栈Java 堆元数据区JDK8 之前....- 盾给网
- 0
- 0
- 446