mq

RabbitMQ实战-浅议与安装(一)

六月ゝ 毕业季﹏ 提交于 2019-12-14 09:59:00
RabbitMQ实战-浅议与安装(一) 1.MQ浅议 2.RabbitMQ介绍 2.1 六种队列模式 2.2 关键名词 3.安装 3.1 下载安装包 3.2 windows安装 3.3 CentOS安装 4.管理后台 1.MQ浅议 MQ是Message Queue的简称,我们也称之为消息队列。MQ是应用与应用之间的通信方法,两端的应用不进行直接调用,而是通过一方推送、一方消费的模式完成消息交换,避免了两个应用之间的依赖与耦合。 MQ框架需遵循AMQP协议,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。(粘贴自百度) 类似的MQ框架有很多,应用比较广泛的有RabbitMQ,Kafka,RocketMQ等,其中要着重介绍的是RocketMQ,它是由阿里开源并线上应用的消息框架,经过淘宝双十一等高可用场景下的考验,我司在阿里云上就购买了RocketMQ的线上应用,效果非常好。 我们今天要介绍的是另外一种MQ框架RabbitMQ,通过这张表格,我们可以比较直观的看到各MQ框架在应用场景、吞吐量等多方面的优劣,所以综合考虑,我们选择学习RabbitMQ。 2

ActiveMQ--初步介绍及linux下环境搭建

不打扰是莪最后的温柔 提交于 2019-12-14 08:06:47
一、什么是MQ消息中间件 消息中间件可以利用高效可靠的消息传递机制进行与平台无关的消息交流,并基于数据通信来进行分布式系统的集成。 通过 消息传递 和 消息排队 模型在分布式环境下提供 应用解耦 、弹性伸缩、冗余存储、 流量削峰 、 异步通讯 、数据同步等功能 大致流程如下: 发送者把消息发送给消息服务器(MQ),消息服务器将消息存放在若干 队列/主题 中,在核实的时候,消息服务器会将消息转发给接收者。在这个过程中, 发送和接受是异步的 ,也就是发送无需等待,而且发送者和接收者的生命周期没有必然关系。 尤其在发布pub/订阅sub模式下,也可以完成一对多的通信,即让一个消息有多个接收者。 1.大多应用中,可通过消息服务中间件来提升系统 异步通信 、扩展 解耦 能力、可在高并发场景中起到 流量削峰 的作用 1)传统的同步调用,导致系统同步通信效率低 、 使用消息队列解决异步通信的问题,将注册信息按格式写入消息队列,发送邮件和发送注册短信的功能进行异步调用,从而加快系统的响应速度。 2)应用解耦,当分布式项目的某个系统如果直接调用另一个系统的接口,会使应用的耦合度升高。 当用了消息队列后,可以使用库存系统进行订阅监听消息队列来实现系统之间的调用,解除系统之间的耦合度,系统只需要面向消息队列即可。 3)流量削峰,比如在一个秒杀系统中,在同一时刻可能有很高很高的并发量

RocketMQ:一个纯java的开源消息中间件--开发测试环境搭建

本秂侑毒 提交于 2019-12-14 00:18:00
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一、简介 RocketMQ的前身是Metaq,当 Metaq 3.0发布时,产品名称改为 RocketMQ MetaQ2.x版本由于依赖了alibaba公司内部其他系统,对于公司外部用户使用不够友好,推荐使用3.0版本。 项目地址: https://github.com/alibaba/RocketMQ 二、安装RocketMQ 安装RocketMQ需要jdk1.6, maven,git环境 如果本机没有安装git,请使用如下命令安装 yum install git 具体安装步骤可以参考 RocketMQ 项目组给出的步骤,参见: https://github.com/alibaba/RocketMQ/wiki/Quick-Start git clone https://github.com/alibaba/RocketMQ.git cd RocketMQ sh install.sh cd devenv 安装完成后,因为install.sh脚本中创建devenv 符号链接写错了目录,需要在RocketMQ目录下执行如下命令: rm -rf devenv ln -s target/alibaba-rocketmq-3.0.7/alibaba-rocketmq devenv 启动RocketMQ cd devenv

分布式之消息队列的特点、选型、及应用场景详解

主宰稳场 提交于 2019-12-13 19:02:21
什么是消息队列 消息队列(Message Queue,简称MQ),指保存消息的一个容器,本质是个队列。 消息(Message)是指在应用之间传送的数据,消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。 消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,有消息系统来确保信息的可靠专递,消息发布者只管把消息发布到MQ中而不管谁来取,消息使用者只管从MQ中取消息而不管谁发布的,这样发布者和使用者都不用知道对方的存在。 Producer:消息生产者,负责产生和发送消息到 Broker; Broker:消息处理中心。负责消息存储、确认、重试等,一般其中会包含多个 queue; Consumer:消息消费者,负责从 Broker 中获取消息,并进行相应处理; 现在常用的MQ组件有ActiveMQ、RabbitMQ、RocketMQ、ZeroMQ,当然近年来火热的Kafka,从某些场景来说,也是MQ,当然kafka的功能更加强大。 虽然不同的MQ都有自己的特点和优势,但是,不管是哪种MQ,都有MQ本身自带的一些特点,下面,咱们谈谈消息队列的的特点、优势、选型、以及应用场景。 为什么需要消息队列 在高并发分布式环境下,由于来不及同步处理,通过使用消息队列,可以异步处理请求,从而缓解系统的压力。 举一个订单系统的例子:用户点击下订单

分布式之消息队列的特点、选型、及应用场景详解

故事扮演 提交于 2019-12-13 16:13:14
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 什么是消息队列 消息队列(Message Queue,简称MQ),指保存消息的一个容器,本质是个队列。 消息(Message)是指在应用之间传送的数据,消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。 消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,有消息系统来确保信息的可靠专递,消息发布者只管把消息发布到MQ中而不管谁来取,消息使用者只管从MQ中取消息而不管谁发布的,这样发布者和使用者都不用知道对方的存在。 Producer:消息生产者,负责产生和发送消息到 Broker; Broker:消息处理中心。负责消息存储、确认、重试等,一般其中会包含多个 queue; Consumer:消息消费者,负责从 Broker 中获取消息,并进行相应处理; 现在常用的MQ组件有ActiveMQ、RabbitMQ、RocketMQ、ZeroMQ,当然近年来火热的Kafka,从某些场景来说,也是MQ,当然kafka的功能更加强大。 虽然不同的MQ都有自己的特点和优势,但是,不管是哪种MQ,都有MQ本身自带的一些特点,下面,咱们谈谈消息队列的的特点、优势、选型、以及应用场景。 为什么需要消息队列 在高并发分布式环境下,由于来不及同步处理,通过使用消息队列

MQ消息队列基础1

佐手、 提交于 2019-12-13 03:43:45
消息队列的作用: 异步,削峰,降低系统耦合性。 1.通过异步处理提高系统性能:(削峰,减少响应时间,比如如果没有消息队列,那么可能100条数据同时打入数据库,而有了消息队列,则数据会一条一条写入数据库,遵守消息队列的先进先出规则)。 2.降低系统耦合性:不同进程之间传递消息时,两个进程之间耦合度过高,改动一个进程,则必须修改另一个进程,为了隔离这两个进程,在两进程间抽离出一层(一个模块),两进程之间的通信,必须通过消息队列来传递,单独修改某一个进程,不会影响另一个;(比如你去送信,如果接受人的地址改变了,那么你送信的路线也会改变,但是如果中间多个邮局,那么即使收信人的地址改变了,也和你没关系,你只要把信放在邮局就ok了,你的路线永远是从你家到邮局这条固定的。) 常见的MQ:ActiveMq,RabbitMQ,RocketMQ,Kafka 名称 ActiveMQ RabbitMQ RocketMQ Kafka 单击吞吐量 万级,吞吐量比RockerMQ和Kafka要低了一个数量级 万级,吞吐量比RocketMQ和kafka要低了一个数量级 十万级,RocketMQ也是可以支撑高吞吐的一种MQ 十万级别,这是kafka最大的有点,就是吞吐量高。一般配合大数据类的系统来进行实时数据计算,日志采集等场景 topic数量对吞吐量的影响 topic可以达到几百,几千个的级别

Synchronous Message send and receive using JMS template and Spring Boot

空扰寡人 提交于 2019-12-13 03:24:31
问题 I am after sending/receiving call to JMS queue synchronously using JMS Template and Spring boot. I went through official spring doc for JMS template but of no help. I am not too sure about calling receive() method specifically or it will automatically receive message once send() is invoked. Since this is synchronous call I only need to receive message that I've sent (with the correlation Id). Any help in this regard would be appreciated. Please let me know if you need any further info. Update

Migrating from IBM MQ to javax.jms.* (Weblogic)

拥有回忆 提交于 2019-12-12 21:15:21
问题 I've been looking for days about how one could migrate from using IBM Websphere MQ to rather only using the QueueManager within Weblogic 10.3.x server. This would save cost of licenses for IBM MQ. The closest I came was finiding an external link which stated that IBM examples existed that did something similar(moving away from MQ to standard jms libraries), but when I attempted to follow the link: http://www.developer.ibm.com/isv/tech/sampmq.html it lead to a dead page :\ More specifically I

Migrating from jboss AS5 to JbossAS6.1

痴心易碎 提交于 2019-12-12 00:08:33
问题 I am migrating the JBOSS AS from 5 to 6 and endup with some errors Caused by: javax.jms.InvalidDestinationException: MQJMS2008: failed to open MQ queue at com.ibm.mq.jms.MQQueueServices.getQueueOpenException(MQQueueServices.java:412) [:6.0.0.0 - j000-L050519.1 ] at com.ibm.mq.jms.JMSServicesMgr.getQueueOpenException(JMSServicesMgr.java:120) [:6.0.0.0 - j000-L050519.1 ] at com.ibm.mq.jms.MQSession.createQReceiver(MQSession.java:6000) [:6.0.0.0 - j000-L050519.1 ] at com.ibm.mq.jms

Java program MQ 7 connection issue

三世轮回 提交于 2019-12-11 20:17:16
问题 I am trying to connect to the MQ7 Server below is the code : Hashtable props = new Hashtable(); // Change the host name to your host name. Leave it as it is if // queue manager is on the same machine props.put(CMQC.HOST_NAME_PROPERTY, serverConfig.server); props.put(CMQC.PORT_PROPERTY, serverConfig.port); props.put(CMQC.CHANNEL_PROPERTY, serverConfig.sChannel); qMgr = new MQQueueManager(qManager, props); System.out.println("Queue Manager : "+qMgr+" null"); int openOptions = MQC.MQOO_INPUT_AS