MQ消息队列详解
1.解耦、A系统需要调用B系统的接口传递数据,当不需要被调用的时候,A系统需要重新打包部署到服务器,这样操作很麻烦,用上MQ之后,只管理MQ的就显得简单的多
2.异步、A系统调用B系统的接口,等到B系统的整个逻辑处理完之后,A系统会往下执行,响应慢。
3.削峰,系统压力过大的时候,让系统压力减小。
beyondwild
愿你眸有星辰,心有山河,以梦为马,不负韶华!
展开
-
MQ消息队列详解18:RabbitMQ队列可靠性保证
问题1、Producer在把Message发送Broker的过程中,因为网络问题等发生丢失,或者Message到了Broker,Consumer还没来得及消费,Broker挂掉了。解决方法:一般都是使用confirm机制以及持久化方式解决,1)创建Queue的时候设置持久化,保证Broker持久化Queue的元数据,但是不会持久化Queue里面的消息,2)这样只有Message支持化到磁盘之后才会发送confirm通知Producer ack进行确认。这两步过后,即使Broker挂了,Pro原创 2020-07-29 08:48:07 · 268 阅读 · 0 评论 -
MQ消息队列详解17:消息队列手动确认Ack
以RabbitMQ为例,默认情况下 RabbitMQ是自动ACK机制,就意味着 MQ 会在消息发送完毕后,自动帮我们去ACK,然后删除消息的信息。这样依赖就存在这样一个问题:如果消费者处理消息需要较长时间,最好的做法是消费端处理完之后手动去确认。1、配置文件: rabbitmq: host: ${yun.activity.rabbitmq.host} port: ${yun.activity.rabbitmq.port} username: ${yun.activi.原创 2020-07-29 08:46:22 · 1640 阅读 · 0 评论 -
MQ消息队列详解16:ActiveMQ RabbitMQ KafKa对比
前言: ActiveMQ和 RabbitMq 以及Kafka在之前的项目中都有陆续使用过,当然对于三者没有进行过具体的对比,以下摘抄了一些网上关于这三者的对比情况,我自己看过之后感觉还是可以的,比较清晰的反馈了这三个的具体情况已经使用场景,具体的对比如下:1)TPS比较:Kafka最高,RabbitMq 次之, ActiveMq 最差。2)吞吐量对比:kafka具有高的吞吐量,内部采用消息的批量处理,zero-copy机制,数据的存储和获取是本地磁盘顺序批量操作,具有O(...原创 2020-07-29 08:44:14 · 281 阅读 · 0 评论 -
MQ消息队列详解15:ActiveMQ相关下载
官网下载地址:http://activemq.apache.org/download-archives.htmljava工程依赖包下载:在Java项目中使用activemq在java工程中导入ActiveMQ需要的包需要如下包:activemq-core.jaractiveio-core.jarkahadb.jar (if you wish to use persistence,如果要使用持久化需要此jar包)slf4j-api.jarJ2EE Jarsgeronimo-spec-j原创 2020-07-29 08:41:41 · 211 阅读 · 0 评论 -
MQ消息队列详解14:JMS客户端ACK_MODE类型
ACK_MODE确认模式--------------------------------------------------------------------------------------------------------------------确认模式用来指示会话如何确认收到消息,在使用Connection的createSession方法时需要指定此选项,在JMS的Session接口中包含下面四个选项· AUTO_ACKNOWLEDGE = 1 自动确认当会话从对 rece...原创 2020-07-29 08:40:10 · 588 阅读 · 0 评论 -
MQ消息队列详解13:JMS消息类型
MS API 定义了五种消息正文类型:-------------------------------------------------------------------------------------------------------------------Stream(流)- StreamMessage 对象的消息正文包含 Java 编程语言原始值流(“Java 基本类型”)。按顺序填充和读取。Map(映射)- MapMessage 对象的消息正文包含一组名称-值对,其中名称是 S.原创 2020-07-29 08:38:30 · 476 阅读 · 0 评论 -
MQ消息队列详解12:ActiveMQ配置自动清除数据
备注:(删除不活动的队列(Delete Inactive Destinations))一般情况下,ActiveMQ的Topic和Queue在不使用之后,可以通过web控制台或是JMX方式来删除掉。当然,也可以通过配置,使得broker可以自动探测到无用的队列(一定时间内为空的队列)并删除掉,回收响应资源。实现定时自动清理无效的Topic和Queue需要设置三个属性。activemq.xml配置如下:在<broker>节点上新增: <broker xmlns="http:原创 2020-07-29 08:36:50 · 2009 阅读 · 0 评论 -
MQ消息队列详解11:ActiveMQ常见错误三 Caused by: java.net.UnknownHostException: centos: 未知的名称或服务
ActiveMQ启动时出现错误信息如下:Caused by: java.net.UnknownHostException: centos: 未知的名称或服务at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:866)at java.net.InetAddress.getAddressesFromNameSer原创 2020-07-28 09:43:11 · 746 阅读 · 0 评论 -
MQ消息队列详解10:ActiveMQ常见错误二 javax.jms.JMSException: Unknown data type: 47
Java连接ActiveMQ时报错:javax.jms.JMSException: Unknown data type: 47at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:72)at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1423)at org.apache.activ原创 2020-07-28 09:40:58 · 721 阅读 · 0 评论 -
MQ消息队列详解9:错误一 BeanFactory not initialized or already closed - call ‘refresh‘ before accessing beans
ActiveMQ 启动时错误:Caused by: java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContextat org.springframework.context.support.AbstractRefreshableApplicationContext.ge.原创 2020-07-28 09:39:50 · 416 阅读 · 0 评论 -
MQ消息队列详解8:ActiveMQ集群负载配置
1概述针对海量消息所要求的横向扩展性和系统的高可用性,ActiveMQ提供了网络连接模式的集群功能。简单的说,就是通过把多个不同的broker实例连接在一起,作为一个整体对外提供服务,从而提高整体对外的消息服务能力。通过这种方式连接在一起的broker实例之间,可以共享队列和消费者列表,从而达到分布式队列的目的。2自定义安装2.1部署结构Machine1:192.168.1.106Machine2:192.168.1.1072.2安装步骤...原创 2020-07-28 09:28:34 · 312 阅读 · 0 评论 -
MQ消息队列详解7:ActiveMQ连接协议说明
1概述,ActiveMQ提供一种连接机制,这种连接机制使用传输连接器(transport connector)实现客户端与代理(client-to-broker)之间的通信;ActiveMQbroker的主要作用是为客户端程序提供一种通信机制;使用网络连接器(network connector)实现代理与代理之间的通信.代理可以简单的看出启动了一个socket监听,一个jms中间件可以启动多个通信监听。另外activemq本身是通过java实现的,我们也可以通过编程方式,在代码中启动ac..原创 2020-07-28 08:50:36 · 498 阅读 · 0 评论 -
MQ消息队列详解6:ActiveMQ主从配置
1概述 ActiveMQ是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用程序提供高效的、可扩展的、稳定的和安全的企业级消息通信。ActiveMQ使用Apache提供的授权,任何人都可以对其实现代码进行修改。ActiveMQ的设计目标是提供标准的,面向消息的,能够跨越多语言和多系统的应用集成消息通信中间件。ActiveMQ实现了JMS标准并提供了很多附加的特性。这些附加的特性包括,JMX管理(java Management Extensions,即java管理扩展)...原创 2020-07-28 08:38:58 · 252 阅读 · 0 评论 -
MQ消息队列详解5:ActiveMQ持久化配置
ActiveMQ持久化配置1概述ActiveMQ是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用程序提供高效的、可扩展的、稳定的和安全的企业级消息通信。ActiveMQ使用Apache提供的授权,任何人都可以对其实现代码进行修改。ActiveMQ的设计目标是提供标准的,面向消息的,能够跨越多语言和多系统的应用集成消息通信中间件。ActiveMQ实现了JMS标准并提供了很多附加的特性。这...原创 2020-07-28 08:33:36 · 325 阅读 · 0 评论 -
MQ消息队列详解4:ActiveMQ单机安装和使用
ActiveMQ单机安装使用1概述ActiveMQ是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用程序提供高效的、可扩展的、稳定的和安全的企业级消息通信。ActiveMQ使用Apache提供的授权,任何人都可以对其实现代码进行修改。ActiveMQ的设计目标是提供标准的,面向消息的,能够跨越多语言和多系统的应用集成消息通信中间件。ActiveMQ实现了JMS标准并提供了很多附加的特性...原创 2020-07-28 08:28:03 · 205 阅读 · 0 评论 -
MQ消息队列详解3:ActiveMQ could not be locked错误
本机启动Active之后日志打印输出提示could not be locked纠结了一下,就试着把/data/kahadb目录下db.*文件删除,删除不了提示被占用中查看任务管理器原来ActiveMQ自动启动了个java.exe进程后面网上搜索了下原因:因为安装activemq服务默认是随系统启动的,所以一开机activemq服务器就启动了,启动后就锁定了activemq的数据库,所以如果再次启动的话就会报数据库被锁定的错误。解决办法:在服务里面,如:windows下 进入Servi.原创 2020-07-28 08:23:22 · 554 阅读 · 0 评论 -
MQ消息队列详解2:ActiveMQ两种模式PTP和PUB/SUB
1.PTP模型PTP(Point-to-Point)模型是基于队列(Queue)的,对于PTP消息模型而言,它的消息目的是一个消息队列(Queue),消息生产者每次发送消息总是把消息送入消息队列中,消息消费者总是从消息队列中读取消息.先进队列的消息将先被消息消费者读取.发送方发消息到队列,接收方从队列接收消息,队列的存在使得消息的异步传输成为可能。和邮件系统中的邮箱一样,队列可以包含各种消息,JMS Provider 提供工具管理队列的创建、删除。JMS PTP 模型定义了客户端如何向队列发送消息,原创 2020-07-28 08:21:33 · 1114 阅读 · 0 评论 -
MQ消息队列详解1:目录
MQ消息队列详解1:目录MQ消息队列详解2:ActiveMQ两种模式PTP和PUB/SUBMQ消息队列详解3:ActiveMQ could not be locked错误MQ消息队列详解4:ActiveMQ单机安装和使用MQ消息队列详解5:ActiveMQ持久化配置MQ消息队列详解6:ActiveMQ主从配置MQ消息队列详解7:ActiveMQ连接协议说明MQ消息队列详解8:ActiveMQ集群负载配置MQ消息队列详解9:ActiveMQ常见错误一 BeanFactory n原创 2020-07-29 08:51:54 · 280 阅读 · 0 评论