当前位置: 代码迷 >> 综合 >> JAVA面试题 - ActiveMQ
  详细解决方案

JAVA面试题 - ActiveMQ

热度:108   发布时间:2023-10-24 09:23:00.0

JAVA面试题 总目录篇

目录

    • queue 与 topic 区别?
    • ActiveMQ如何调优?
    • 怎么解决消息丢失的问题?
    • 怎么解决重复消费的问题?
    • 如何保证消费顺序?

queue 与 topic 区别?

1、点对点(point-to-point,简称PTP)Queue消息传递模型:
在该消息传递模型下,一个消息生产者向消息服务器端一个特定的队列发送消息,一个消费者从该队列中读取消息。在这种模型下,消息生产者知道消息消费者的队列并直接将消息发送到消息消费者的队列。这种模型的特点为:能够保证数据安全;
2、发布/订阅(publish/subscribe,简称pub/sub)Topic消息传递模型:
在该消息传递模型下,一个消息发布者向一个特定的消息主题发布消息,0或多个对此消息主题感兴趣的并且处于活动状态的消息订阅者或者建立了持久订阅的消息订阅者才可以接收到所发布的消息。

ActiveMQ如何调优?

ActiveMQ如何调优有两种简单方式:

  1. 使用非持久化消息;
  2. 需要确保消息发送成功时,使用事务来将消息分批组合。

怎么解决消息丢失的问题?

做高可用
死信队列
持久化
ack
消息重投
记录日志
接收(消费)确认
broker负载/限流

怎么解决重复消费的问题?

根据具体业务,具体实现。
如果是写库操作,可以先去数据库查询一下,如果已有记录,那么就更新。
如果是redis,那就直接set,天然幂等。或者生产者生产消息时,传一个全局唯一ID,现根据ID去redis查询,如果已存在,则不执行该消息。

如何保证消费顺序?

queue 优先级别设置。

  相关解决方案