1. ActiveMQ服务器宕机怎么办?1.这得从ActiveMQ的储存机制说起。在通常的情况下,非持久化消息是存储在内存中的,持久化消息是存储在
文件中的,它们的最大限制在配置文件的<systemUsage>节点中配置。2.但是,在非持久化消息堆积到一定程度,内存告急的时候,ActiveMQ会将内存中的非持久化消息写入临时
文件中,以腾出内存。3.虽然都保存到了文件里,但它和持久化消息的区别是,重启后持久化消息会从文件中恢复,非持久化的临时
文件会直接删除。4.设置2G左右的持久化文件限制,大量生产持久化消息直到文件达到最大限制,此时生产者阻塞,但消费者可
正常连接并消费消息,等消息消费掉一部分,文件删除又腾出空间之后,生产者又可继续发送消息,服务自动
恢复正常。5.设置2G左右的临时文件限制,大量生产非持久化消息并写入临时文件,在达到最大限制时,生产者阻塞,
消费者可正常连接但不能消费消息,或者原本慢速消费的消费者,消费突然停止。整个系统可连接,但是无法
提供服务,就这样挂了。解决方案:尽量不要用非持久化消息,非要用的话,将临时文件限制尽可能的调大。2. 丢消息怎么办?用持久化消息,或者非持久化消息及时处理不要堆积,或者启动事务,启动事务后,commit()方法会负责任的
等待服务器的返回,也就不会关闭连接导致消息丢失了。3. 持久化消息非常慢。默认的情况下,非持久化的消息是异步发送的,持久化的消息是同步发送的,遇到慢一点的硬盘,发送消息的
速度是无法忍受的。但是在开启事务的情况下,消息都是异步发送的,效率会有2个数量级的提升。所以在发送
持久化消息时,请务必开启事务模式。其实发送非持久化消息时也建议开启事务,因为根本不会影响性能。4. 消息的不均匀消费。解决方案:将prefetch设为1,每次处理1条消息,处理完再去取,这样也慢不了多少。6. ActiveMQ中的消息重发时间间隔和重发次数吗?1.ActiveMQ:是Apache出品,最流行的,能力强劲的开源消息总线。2.是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现。

ActiveMQ

1.什么是activemqactiveMQ是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用程序提供高效的、
可扩展的、稳定的和安全的企业级消息通信。2.activemq的作用以及原理Activemq 的作用就是系统之间进行通信。 如果使用 Activemq 的话可以对系统之间的调用进行解耦, 实现系统间的异步通信。原理就是生产者生产消息, 把消息发送给activemq。Activemq 接收到消息, 然后查看有多少个消费者, 然后把消息转发给消费者, 此过程中生产者无需参与。3.activemq的几种通信方式3.1 publish(发布)-subscribe(订阅)(发布-订阅方式)发布/订阅方式用于多接收客户端的方式.作为发布订阅的方式,可能存在多个接收客户端,并且接收端客户端
与发送客户端存在时间上的依赖。一个接收端只能接收他创建以后发送客户端发送的信息。作为subscriber ,在接收消息时有
两种方法,destination的receive方法,和实现message listener 接口的onMessage 方法3.2 p2p(point-to-point)(点对点)p2p的过程则理解起来比较简单。它好比是两个人打电话,这两个人是独享这一条通信链路的。
一方发送消息,另外一方接收,就这么简单。相互通信的双方是通过一个类似于队列的方式来进行交流。和前面pub-sub的区别在于一个topic有一个发送者和多个接收者,而在p2p里一个queue只有一个发送者和
一个接收者。1.publish(发布)-subscribe(订阅)方式的处理发布订阅模式的通信方式, 默认情况下只通知一次, 如果接收不到此消息就没有了。这种场景只适用于对消息送达率要求不高的情况。 如果要求消息必须送达不可以丢失的话, 需要配置
持久订阅。2. p - p(点对点)方式的处理点对点模式的话, 如果消息发送不成功此消息默认会保存到 activemq 服务端直到有消费者将其消费,
所以此时消息是不会丢失的。5.如何解决消息重复问题所谓消息重复,就是消费者接收到了重复的消息,一般来说我们对于这个问题的处理要把握下面几点,①.消息不丢失(上面已经处理了)②.消息不重复执行一般来说我们可以在业务段加一张表,用来存放消息是否执行成功,每次业务事物commit之后,告知服务端,
已经处理过该消息,这样即使你消息重发了,也不会导致重复处理大致流程如下:业务端的表记录已经处理消息的id,每次一个消息进来之前先判断该消息是否执行过,如果执行过就放弃,
如果没有执行就开始执行消息,消息执行完成之后存入这个消息的id

activeMQ总结

1. 大量的消息每页被消费,能否发生oom异常?1. 可以控制每个消息队列中数据的大小,不允许无线填充数据,避免该队列多大,导致过度消耗系统资源
问题; 可以控制队列的内存大小;2. activeMQ数据丢失怎么办?可以使用对数据进行持久化JDBC,AMQ(日志文件),KahaDB和LevelDB,ActiveMQ的消息持久化机制有JDBC,AMQ(日志文件),KahaDB和LevelDBKahaDB是从ActiveMQ 5.4开始默认的持久化插件从ActiveMQ 5.6版本之后,又推出了LevelDB的持久化引擎。目前默认的持久化方式仍然是KahaDB,
不过LevelDB持久化性能高于KahaDB,可能是以后的趋势。在ActiveMQ 5.9版本提供了基于LevelDB和Zookeeper的数据复制方式,用于Master-slave方式的首选数据
复制方案。方式一:利用mysql持久化activeMQ数据 1)改动部分主要是设置了mysql的datasource声明, 还有就是采用mysql作为persistenceAdapter,
并声明如下;<bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  <property name="driverClassName" value="com.mysql.jdbc.Driver"/>  <property name="url" value="jdbc:mysql://localhost:3306/activemq
?relaxAutoCommit=true"/>  <property name="username" value="root"/>  <property name="password" value=""/>  <property name="maxActive" value="200"/>  <property<strong> </strong>name="poolPreparedStatements"
value="true"/>  </bean><persistenceAdapter>  <jdbcPersistenceAdapter dataSource="#mysql-ds"/>  </persistenceAdapter>2)把数据库的驱动放入ActiveMQ的lib中,使其能够访问相应的数据库,关于数据库的表结构,ActiveMQ会
自动创建,但是前提是当ActiveMQ启动以后,声明的数据库要是存在的。测试的时候发现以上条件都满足ActiveMQ还是会抛异常,看了一下异常,是有一张表(activemq_acks)
创建的时候出了问题,自己手动创建后好了,把表结构列出来。3)当消息发送至ActiveMQ时,数据就被持久化到mysql了,如果消息被消费,数据会自动被删除,down机后
重启没影响,有一点不好的是,这个有点拖数据库,我在本地的mysql,一开启ActiveMQ, 数据库就会变得
很慢,不过这个只是在本地的机子上,想必实际应用时应该好很多。4. queue 与 topic 区别 1、点对点(point-to-point,简称PTP)Queue消息传递模型:在该消息传递模型下,一个消息生产者向消息服务器端一个特定的队列发送消息,一个消费者从该队列中
读取消息。这种模型的特点为:能够保证数据安全;2、发布/订阅(publish/subscribe,简称pub/sub)Topic消息传递模型:在该消息传递模型下,一个消息发布者向一个特定的消息主题发布消息,0或多个对此消息主题感兴趣的
并且处于活动状态的消息订阅者或者建立了持久订阅的消息订阅者才可以接收到所发布的消息。5. RocketMQ特點:作为一款分布式消息引擎,RocketMQ有如下特性:
低延迟、高并发:99.6%以上的响应延迟在1毫秒以内
面向金融:满足跟踪和审计的高可用性
工业级适用:可确保万亿量级的消息发送
中立性:支持多种消息传递协议,如JMS和OpenMessaging
性能可靠:给予足够的磁盘空间,消息可以累积存放而没有性能损失。6. activeMQ发送消息的方式有哪些?activeMQ如何调优有两种简单方式:1. 使用非持久化消息;2. 需要确保消息发送成功时使用事务来将消息分批组合.public void sendTransacted() throws JMSException {  ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory();  Connection connection = cf.createConnection();  connection.start();  Session session = connection.createSession(true, Session.SESSION_TRANSACTED);  Topic topic = session.createTopic("Test.Transactions");  MessageProducer producer = session.createProducer(topic);  int count = 0;  for (int i = 0; i < 1000; i++) {  Message message = session.createTextMessage("message " + i);  producer.send(message);  if (i != 0 && i % 10 == 0) {  session.commit();  }  }  }  public void sendNonTransacted() throws JMSException {  ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory();  Connection connection = cf.createConnection();  connection.start();  // create a default session (no transactions)  Session session = connection.createSession(false, Session.AUTO_ACKNOWELDGE);  Topic topic = session.createTopic("Test.Transactions");  MessageProducer producer = session.createProducer(topic);  int count = 0;  for (int i = 0; i < 1000; i++) {  Message message = session.createTextMessage("message " + i);  producer.send(message);  }  }  8. activeMQ端口号端口号:616169. jsm的同步与异步消息通信的基本方式有两种:1、同步方式两个通信应用服务之间必须要进行同步,两个服务之间必须都是正常运行的。发送程序和接收程序都必须一直
处于运行状态,并且随时做好相互通信的准备。发送程序首先向接收程序发起一个请求,称之为发送消息,发送程序紧接着就会堵塞当前自身的进程,不与
其他应用进行任何的通信以及交互,等待接收程序的响应,待发送消息得到接收程序的返回消息之后会继续
向下运行,进行下一步的业务处理。2、异步方式两个通信应用之间可以不用同时在线等待,任何一方只需各自处理自己的业务也就是说发送方和接收方都是相互独立存在的,发送方只管方,接收方只能接收,无须去等待对方的响应。Java中JMS就是典型的异步消息处理机制,JMS消息有两种类型:点对点、发布/订阅。

ActiveMQ基本详解与总结

MQ简介:MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是
用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。MQ特点:MQ的消费-生产者模型的一个典型的代表,一端往消息队列中不断的写入消息,而另一端则可以读取或者订阅
队列中的消息。MQ和JMS类似,但不同的是JMS是SUN JAVA消息中间件服务的一个标准和API定义,而MQ则是遵循了AMQP协议的
具体实现和产品。使用场景:在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了
服务器的请求响应时间,从而提高了系统的吞吐量。JMS简介:JMS即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)
的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。定义:JMS(Java Messaging Service)是Java平台上有关面向消息中间件(MOM)的技术规范,它便于消息系统中
的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发,翻译
为Java消息服务。简介:JMS是一种与厂商无关的 API,用来访问消息收发系统消息。它类似于JDBC(Java DatabaseConnectivity):JDBC 是可以用来访问许多不同关系数据库的 API,而 JMS 则提供同样与厂商无关的访问方法,以访问消息
收发服务。JMS 使您能够通过消息收发服务(有时称为消息中介程序或路由器)从一个 JMS 客户机向另一个JMS
客户机发送消息。消息是 JMS 中的一种类型对象,由两部分组成:报头和消息主体。报头由路由信息以及有关该消息的元数据组成。消息主体则携带着应用程序的数据或有效负载。根据有效负载的类型来划分,可以将消息分为几种类型,它们分别携带:简单文本(TextMessage)、
可序列化的对象 (ObjectMessage)、属性集合 (MapMessage)、字节流 (BytesMessage)、
原始值流 (StreamMessage),还有无有效负载的消息 (Message)。JMS和MQ的关系:JMS是一个用于提供消息服务的技术规范,它制定了在整个消息服务提供过程中的所有数据结构和交互流程。而MQ则是消息队列服务,是面向消息中间件(MOM)的最终实现,是真正的服务提供者;MQ的实现可以
基于JMS,也可以基于其他规范或标准。支持JMS的开源MQ:目前选择的最多的是ActiveMQ。ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和
J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用
中间仍然扮演着特殊的地位。主要特点:1. 多种语言和协议编写客户端。语言: Java, C, C++, C#, Ruby, Perl, Python, PHP。
应用协议: OpenWire,Stomp REST,WSNotification,XMPP,AMQP2. 完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务)3. 对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性4. 通过了常见J2EE服务器的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE 1.4 商业服务器上5. 支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA6. 支持通过JDBC和journal提供高速的消息持久化优点:消息异步接受,减少软件多系统集成的耦合度。消息可靠接收,确保消息在中间件可靠保存,多个消息也可以
组成原子事务。缺点:ActiveMQ默认的配置性能偏低,需要优化配置,但是配置文件复杂,ActiveMQ本身不提供管理工具;
示例代码少;ActiveMQ应用场景:1、 不同语言应用集成ActiveMQ 中间件用Java语言编写,因此自然提供Java客户端 API。但是ActiveMQ 也为C/C++、
.NET、Perl、PHP、Python、Ruby 和一些其它语言提供客户端。在你考虑如何集成不同平台不同语言编写
应用的时候,ActiveMQ 拥有巨大优势。2、 作为RPC的替代使用RPC同步调用的应用十分普遍。假设大多数客户端服务器应用使用RPC,包括ATM、大多数WEB应用、
信用卡系统、销售点系统等等。使用同步请求的系统在规模上有较大的限制,因为请求会被阻塞,从而导致整个系统变慢。如果使用异步消息
替代,可以很容易增加额外的消息接收者,使得消息能被并发消耗,从而加快请求处理。当然,你的系统应用
间应该是解耦的。3、 应用之间解耦松耦合架构,在另一方面,证实了更少的依赖性,能够更好地处理不可预见的改变。不仅可以在系统中改变
组件而不影响整个系统,而且组件交互也相当的简单。4、 作为事件驱动架构的主干当用户下单是,有一个同步的体积表单动作,但整个处理流程并不通过浏览器同步处理。相反地,订单马上被
接受和反馈。而剩下的步骤就通过异步处理。如果在处理过程中出错,用户会通过邮件收到通知。这样的异步
处理能提供高负载和高可用性。5、 提高系统扩展性很多使用事件驱动设计的系统是为了获得高可扩展性,例如电子商务,政府,制造业,线上游戏等。通过异步
消息分开商业处理步骤给各个应用,能够带来很多可能性。考虑设计一个应用来完成一项特殊的任务。这就是
面向服务的架构(service-oriented architecture SOA)。每一个服务完成一个功能并且只有一个功能。activeMQ是什么?是Apache公司旗下的一个消息总线ActiveMQ是一个开源兼容Java Message Service (JMS) 1.1面向消息的中件间. 来自Apache
Software Foundation. ActiveMQ提供松耦合的应用程序架构.activeMQ能干什么?用来在服务与服务之间进行异步通信的activeMQ优势1.流量削峰2.任务异步处理特点:可以解耦合通信模式:1.点对点(queue)一个消息只能被一个服务接收消息一旦被消费,就会消失如果没有被消费,就会一直等待,直到被消费多个服务监听同一个消费空间,先到先得2.发布/订阅模式(topic)一个消息可以被多个服务接收订阅一个主题的消费者,只能消费自它订阅之后发布的消息。消费端如果在生产端发送消息之后启动,是接收不到消息的,除非生产端对消息进行了持久化(例如广播,
只有当时听到的人能听到信息)注:消息是被推送和拉取的(消息生产端和消费端),不是mq服务器去主动发送的1.发送邮件最经典的就是当用户注册时,我们就需要用activeMQ来做为中间件,当用户注册后,我门把用户的邮箱号和
验证码等信息通过activeMQ的生产端发送到activeMQ的消息队列中,而一旦消息队列中出现了数据,我们的
邮件模块通过实时的监控activeMQ的消息队列就能通过消费端获取到这个数据,染回邮件模块就会自行的去
对数据进行解析,给用户发送邮件

ActiveMQ专题相关推荐

  1. ActiveMQ专题2: 持久化

    AMQ的持久化问题 前言 ​ 前面一篇AMQ专题中,我们发现对于Topic这种类型的消息,即使将deliveryMode设置为持久化,只要生产者在消费者之前启动.消息生产者发布的消息还是会丢失.这是符 ...

  2. 实现自己的大厂梦,毕业一年半拿遍所有大厂offer,怎么做到的?

    前言 很多同学会问Java面试八股文有必要背吗? 答案是,必须背,我的好多同学凭借八股文斩获了多个大厂暑期实习offer,相信一定也可以发挥重要作用. 你可以讨厌这种模式,但你也一定要去背的,因为不背 ...

  3. (转) ActiveMQ面试专题

    ActiveMQ面试专题 1. ActiveMQ服务器宕机怎么办? 这得从ActiveMQ的储存机制说起.在通常的情况下,非持久化消息是存储在内存中的,持久化消息是存储在文件中的,它们的最大限制在配置 ...

  4. activemq mysql集群配置_ActiveMQ专题--集群,高可用方案

    ActiveMQ集群部署方式 Master-Slave部署方式 Broker-Cluster部署方式 Master-Slave与Broker-Cluster相结合的部署方式 Shared databa ...

  5. 高并发大流量专题---8、动态语言的并发处理

    高并发大流量专题---8.动态语言的并发处理 一.总结 一句话总结: 和本科毕业论文连起来了:基于消息中间件Rocket MQ的研究:用于并发处理的消息队列 1.什么是进程.线程.协程? 进程(Pro ...

  6. java消息 框架_java 框架-消息队列ActiveMQ

    https://www.jianshu.com/p/ecdc6eab554c ActiveMQ从入门到精通(一) 22017.03.11 21:40:42字数 2650阅读 57286 这是关于消息中 ...

  7. PHP stomp 连接判断,php实现通过stomp协议连接ActiveMQ操作示例

    本文实例讲述了php实现通过stomp协议连接ActiveMQ操作.分享给大家供大家参考,具体如下: 前面介绍了php ActiveMQ的安装与使用,这里再来讲述一下php通过stomp协议连接Act ...

  8. activeMQ,spring的jmstemplate简单例子

    1.使用的是maven的结构,导入activeMQ的包 [html] view plain copy <dependency> <groupId>org.apache.acti ...

  9. ActiveMQ从入门到精通(二)

    接上一篇<ActiveMQ从入门到精通(一)>,本篇主要讨论的话题是:消息的顺序消费.JMS Selectors.消息的同步/异步接受方式.Message.P2P/PubSub.持久化订阅 ...

最新文章

  1. 什么是三层架构?简单的介绍三层架构!
  2. (转)NSString to string(支持中文)
  3. JavaWeb-SpringBoot(抖音)_二、服务器间通讯
  4. SmartPart事件
  5. java单例模式双重检查
  6. Centos7.2安装python3与python2共存
  7. jvm垃圾回收机制_JVM的垃圾回收机制总结
  8. opencv 直方图投影
  9. oracle常见受权与回收权限 grant和revoke
  10. Vmware虚拟机全屏
  11. 频谱分析仪查看时域波形
  12. Dubbo源码解析之SPI(一):扩展类的加载过程
  13. java drawline_JAVA drawLine()方法怎么用?
  14. H5自适应简约浪漫婚礼邀请函HTML源码
  15. linux运行blast,Linux下BLAST的使用
  16. 瀑布流插件vue-masonry(使用和踩坑心得)适合Vue脚手架开发(适用于Vue2)
  17. EMW3239 调试问题汇总
  18. 阿里巴巴FastJson整理(20分钟阅读)
  19. 4. DFT进阶——ATPG
  20. 内网穿透:什么是内网穿透,以及用什么软件

热门文章

  1. ajax 的同步和异步
  2. java 分层概念 要点
  3. Shell脚本批量创建用户并随机生成密码
  4. 浅谈对JavaScript闭包的理解
  5. java FileReader/FileWriter读写文件
  6. python2.7_1.13_编写一个SNTP客户端
  7. Lucene知识小总结4:索引的反删除
  8. 2.2 Wrappers访问控制
  9. windows 安装ipython
  10. netbeans快捷键