1. 什么是activemq
activeMQ是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用程序提供高效的、可扩展的、稳定的和安全的企业级消息通信。
  1. activemq的作用以及原理
Activemq 的作用就是系统之间进行通信。 当然可以使用其他方式进行系统间通信, 如果使用 Activemq 的话可以对系统之间的调用进行解耦, 实现系统间的异步通信。 原理就是生产者生产消息, 把消息发送给activemq。 Activemq 接收到消息, 然后查看有多少个消费者, 然后把消息转发给消费者, 此过程中生产者无需参与。 消费者接收到消息后做相应的处理和生产者没有任何关系
  1. activemq的几种通信方式
3.1publish(发布)-subscribe(订阅)(发布-订阅方式)
发布/订阅方式用于多接收客户端的方式.作为发布订阅的方式,可能存在多个接收客户端,并且接收端客户端与发送客户端存在时间上的依赖。一个接收端只能接收他创建以后发送客户端发送的信息。作为subscriber ,在接收消息时有两种方法,destination的receive方法,和实现message listener 接口的onMessage 方法

3.2 p2p(point-to-point)(点对点)

p2p的过程则理解起来比较简单。它好比是两个人打电话,这两个人是独享这一条通信链路的。一方发送消息,另外一方接收,就这么简单。在实际应用中因为有多个用户对使用p2p的链路
相互通信的双方是通过一个类似于队列的方式来进行交流。和前面pub-sub的区别在于一个topic有一个发送者和多个接收者,而在p2p里一个queue只有一个发送者和一个接收者。
  1. publish(发布)-subscribe(订阅)方式的处理
发布订阅模式的通信方式, 默认情况下只通知一次, 如果接收不到此消息就没有了。 这种场景只适用于对消息送达率要求不高的情况。 如果要求消息必须送达不可以丢失的话, 需要配置持久订阅。 每个订阅端定义一个 id,  <property name="clientId" 在订阅是向 activemq 注册。 发布消息 <property name="subscriptionDurable" value="true"/>和接收消息时需要配置发送模式为持久化template.setDeliveryMode(DeliveryMode.PERSISTENT);。 此时如果客户端接收不到消息, 消息会持久化到服务端(就是硬盘上), 直到客户端正常接收后为止。
  1. 4.2p - p(点对点)方式的处理
点对点模式的话, 如果消息发送不成功此消息默认会保存到 activemq 服务端直到有消费者将其消费, 所以此时消息是不会丢失的。
  1. 如何解决消息重复问题
所谓消息重复,就是消费者接收到了重复的消息,一般来说我们对于这个问题的处理要把握下面几点,
①.消息不丢失(上面已经处理了)
②.消息不重复执行
一般来说我们可以在业务段加一张表,用来存放消息是否执行成功,每次业务事物commit之后,告知服务端,已经处理过该消息,
这样即使你消息重发了,也不会导致重复处理
大致流程如下:
业务端的表记录已经处理消息的id,每次一个消息进来之前先判断该消息是否执行过,如果执行过就放弃,如果没有执行就开始执行消息,消息执行完成之后存入这个消息的id

转载于:https://www.cnblogs.com/wangjintao-0623/p/9727248.html

ActiveMQ面试题相关推荐

  1. Java ActiveMQ面试题

    1.如何使用ActiveMQ解决分布式事务? 在互联网应用中,基本都会有用户注册的功能.在注册的同时,我们会做出如下操作: ● 收集用户录入信息,保存到数据库 ● 向用户的手机或邮箱发送验证码 如果是 ...

  2. 分布式面试之ActiveMQ面试题

    文章目录 1.什么是ActiveMQ? 2.ActiveMQ服务器宕机怎么办? 3.丢消息怎么办? 4.持久化消息非常慢. 5.消息的不均匀消费. 6.死信队列. 7.ActiveMQ中的消息重发时间 ...

  3. activemq原理 java_面试题activemq的原理详解

    在面试中经常会碰到activemq的问题,相信小伙伴们都挺烦恼的吧,这里小编精心整理了一些关于activemq的面试题,下面快一起来看看吧. 一.activemq是什么? activeMQ是一种开源的 ...

  4. activeMq初识 - 2

    activeMq简单实例: package com.gordon;import org.apache.activemq.ActiveMQConnectionFactory;import javax.j ...

  5. java笔试题分类集锦

    合格的java工程师仅仅要有技术,还要懂得产品才能少修改,懂得测试要求,才能一次通过,懂得运维问题才能减少后期维.这些大方向体现在设计模式,程序架构,小方面就是语言的准确有效性,比如effective ...

  6. 框架面试题(maven、ZooKeeper、Dubbo、Nginx、Redis、Lucene、Solr、ActiveMQ、JMS

    什么是 Maven? Maven 使用项目对象模型(POM)的概念,可以通过一小段描述信息来管理项目的构建, 报告和文档的软件项目管理工具. Maven 除了以程序构建能力为特色之外,还提供高级项目管 ...

  7. 消息中间件(RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ等)的定义、组成、特点、优缺点、应用场景面试题

    大家都参与过网上电商平台的秒杀活动吧,一般的秒杀活动辄几百万的参与人数,而"双十一"的参与人数更是已"亿"为计量单位.那么这些电商平台的系统架构是怎样的,它们是 ...

  8. java分布式面试题之消息队列ActiveMQ部分

    java分布式面试题之消息队列ActiveMQ部分 java分布式面试题之消息队列ActiveMQ部分 1.如何使用ActiveMQ解决分布式事务? 在互联网应用中,基本都会有用户注册的功能.在注册的 ...

  9. 最新Java面试题答案

    JAVA基础 JAVA中的几种基本类型,各占用多少字节? 下图单位是bit,非字节 1B=8bit String能被继承吗?为什么? 不可以,因为String类有final修饰符,而final修饰的类 ...

最新文章

  1. [SCOI2005]王室联邦
  2. 为什么推荐 Java 程序员使用 Google Guava 编程
  3. k means聚类算法_一文读懂K-means聚类算法
  4. 【Netty】Netty 核心组件 ( Pipeline | ChannelPipeline )
  5. 如何查看某oracle实例下面定义了多少jobs
  6. iOS 设置不同环境对应不同icon
  7. zipimport — Import modules from Zip archives¶
  8. db2存储过程手动执行没有问题_轻松解决DB2创建存储过程时遇到的错误
  9. 刷新代码IOS 上拉分页刷新--
  10. android 大众点评,Android 大众点评的接入
  11. 安全星球|盘点最新国内外网络安全资讯
  12. zblog php 安装,Zblog安装教程 zblogphp程序特色和环境要求_徐果萍博客
  13. 中国互联网杀毒软件的简要发展历史
  14. emmc5.1, ufs2.0, ufs3.0
  15. Hadoop Failover
  16. 微信小程序--实现按钮跳转另一个页面
  17. 后天就是七夕节,你准备好了吗?送上几个七夕代码,展示你技能的时候到了!
  18. (Halcon深度学习)安装深度学习工具(DLT)
  19. 将16进制字符串转化成内存二进制数据
  20. [Qt学习笔记]Qt程序加密,实现软件运行次数和硬件信息绑定

热门文章

  1. html获取边缘元素,JQuery 获取元素到浏览器可视窗口边缘的距离
  2. 机器学习中为什么需要梯度下降_机器学习 —— 多元梯度下降
  3. 四二拍用音符怎么表示_2020圣诞平安夜怎么发朋友圈?朋友圈关于平安夜经典语录精选...
  4. 设计一个扩展自抽象类geometricobject_设计模式4之模板方法模式
  5. at24c16如何划分出多个读写区_AVR学习笔记九、基于AT24C16的数据存储实验
  6. hashmap扩容_面试官问:HashMap在并发情况下为什么造成死循环?一脸懵
  7. C语言——指针篇(四)多维数组和多维指针(内含数组指针和指针数组笔记)
  8. android view moveto,android – cursor.moveToPosition(i)的速度有多快?
  9. php xml扩展,php-SimpleXML,请不要扩展实体
  10. 【蓝桥杯】 三行代码解决 “全排列的价值”(2022省赛pythonA组)