mq

springboot项目整合rabbitMq涉及消息的发送确认,消息的消费确认机制

孤者浪人 提交于 2019-11-26 19:31:53
1.引入maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>2.在application.yml的配置: spring: rabbitmq: host: 106.52.82.241 port: 5672 username: yang password: Yangxiaohui227 virtual-host: / publisher-confirms: true #消息发送后,如果发送成功到队列,则会回调成功信息 publisher-returns: true #消息发送后,如果发送失败,则会返回失败信息信息 listener: #加了2下面2个属性,消费消息的时候,就必须发送ack确认,不然消息永远还在队列中 direct: acknowledge-mode: manual simple: acknowledge-mode: manual //为了统一管理所有的Mq消息,建一个类存储常量,消息的设计都基本会涉及(队列(queue),交换机(exchange),路由键(route)三个值) public class RabbitMqConstant { //下单发送消息 队列名

mq解决分布式事物问题

你离开我真会死。 提交于 2019-11-26 19:10:20
今天只看看原理,下一节看项目怎么集成mq进行解决分布式事物。 1、什么情况下会使用到分布式事物? 举例说明:现有一个支付系统,因为项目使用的是微服务框架,有订单模块和支付模块两个模块。生产者进行订单的下单操作购买100元,这时候订单表数据应该是新增一条,然后支付模块的个人账户资金应该是加100元。同一个方法中既需要对订单数据库进行新增又需要调用支付模块对数据进行修改(不同项目不同数据库),这时候就会用到分布式事物,只是举个典型的例子。 那么问题来了,生产者进行订单的下单操作怎么保证订单和支付的数据一致性? 2、mq解决分布式事物需要注意的问题?画了一个图,看看就明白了。 来源: https://www.cnblogs.com/sunxuesong/p/11330463.html

Receiving multiple messages from MQ asynchronously

我怕爱的太早我们不能终老 提交于 2019-11-26 18:40:15
问题 I use Spring + Hibernate + JPA in my application. I need to read the message from Websphere MQ and insert the message to DB. Sometimes there may be continuous messages available and sometimes very less number of messages and sometimes we can expect no message from Queue . Currently I'm reading the message one by one and inserting them to Database. But it does not help much in terms of performance. I mean when I have chunk of messages(Example 300k messages in Queue) I could not insert them

消息队列

假装没事ソ 提交于 2019-11-26 16:55:06
消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ。消息中间件到底该如何使用,何时使用这是一个问题,胡乱地使用消息中间件增加了系统的复杂度,如果用不好消息中间件还不如不用。 0.消息队列通讯模式 1)点对点通讯: 点对点方式是最为传统和常见的通讯方式,它支持一对一、一对多、多对多、多对一等多种配置方式,支持树状、网状等多种拓扑结构。 2)多点广播: MQ适用于不同类型的应用。其中重要的,也是正在发展中的是"多点广播"应用,即能够将消息发送到多个目标站点(DestinationList)。可以使用一条MQ指令将单一消息发送到多个目标站点,并确保为每一站点可靠地提供信息。MQ不仅提供了多点广播的功能,而且还拥有智能消息分发功能,在将一条消息发送到同一系统上的多个用户时,MQ将消息的一个复制版本和该系统上接收者的名单发送到目标MQ系统。目标MQ系统在本地复制这些消息,并将它们发送到名单上的队列,从而尽可能减少网络的传输量。 3)发布/订阅(Publish/Subscribe)模式: 发布/订阅功能使消息的分发可以突破目的队列地理指向的限制,使消息按照特定的主题甚至内容进行分发

Kafka与MQ的区别

痞子三分冷 提交于 2019-11-26 12:43:19
作为消息队列来说,企业中选择mq的还是多数,因为像Rabbit,Rocket等mq中间件都属于很成熟的产品,性能一般但可靠性较强, 而kafka原本设计的初衷是日志统计分析,现在基于大数据的背景下也可以做运营数据的分析统计,而redis的主要场景是内存数据库,作为消息队列来说可靠性太差,而且速度太依赖网络IO,在服务器本机上的速度较快,且容易出现数据堆积的问题,在比较轻量的场合下能够适用。 RabbitMQ,遵循AMQP协议,由内在高并发的erlanng语言开发,用在实时的对可靠性要求比较高的消息传递上。 kafka是Linkedin于2010年12月份开源的消息发布订阅系统,它主要用于处理活跃的流式数据,大数据量的数据处理上。 1)在架构模型方面, RabbitMQ遵循AMQP协议,RabbitMQ的broker由Exchange,Binding,queue组成,其中exchange和binding组成了消息的路由键;客户端Producer通过连接channel和server进行通信,Consumer从queue获取消息进行消费(长连接,queue有消息会推送到consumer端,consumer循环从输入流读取数据)。rabbitMQ以broker为中心;有消息的确认机制。 kafka遵从一般的MQ结构,producer,broker,consumer,以consumer为中心

Roket MQ、kafka、Active MQ的对比

梦想与她 提交于 2019-11-26 09:18:36
内容来自Rocket MQ官网:http://rocketmq.apache.org/docs/motivation/ 这个表格看起来可能比较费劲 我的英语水平有限,翻译可能有不尽原意的情况 为什么我对kafka不能广播持保留意见,因为kafka支持多点广播,这难道不是广播吗,晚些我会查阅kafka相关资料补充相关点 来源: CSDN 作者: 一颗柚子1 链接: https://blog.csdn.net/weixin_40856151/article/details/103237767

windows下RocketMQ安装部署

爷,独闯天下 提交于 2019-11-26 06:27:34
一. 预备环境 1. 系统 Windows 2. 环境 JDK1.8、Maven、Git 二. RocketMQ部署 1. 下载 1.1地址: http://rocketmq.apache.org/release_notes/release-notes-4.2.0/ 1.2选择‘Binary’进行下载 1.3解压已下载工程 2. 配置 2.1 系统环境变量配置 变量名:ROCKETMQ_HOME 变量值:MQ解压路径\MQ文件夹名 2.2重启服务器 3. 启动 3.1 启动NAMESERVER Cmd命令框执行进入至‘MQ文件夹\bin’下,然后执行‘start mqnamesrv.cmd’,启动NAMESERVER。成功后会弹出提示框,此框勿关闭。 3.2 启动BROKER Cmd命令框执行进入至‘MQ文件夹\bin’下,然后执行‘start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true’,启动BROKER。成功后会弹出提示框,此框勿关闭。 假如弹出提示框提示‘错误: 找不到或无法加载主类 xxxxxx’。打开runbroker.cmd,然后将‘'%CLASSPATH%’'加上英文双引号。保存并重新执行start语句。 三. RocketMQ插件部署 1. 下载 地址:https://github.com

SpringBoot使用RabbitMQ做消息中间件

不羁岁月 提交于 2019-11-25 23:25:34
说明 MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。MQ是 消费-生产者 模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取或者订阅队列中的消息。MQ和JMS类似,但不同的是JMS是SUN JAVA消息中间件服务的一个标准和API定义,而MQ则是遵循了AMQP协议的具体实现和产品。 RabbitMQ是一个在 AMQP(高级消息队列协议) 基础上完成的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。作用:在项目中,将一些无需即时返回且耗时的操作提取出来,进行了 异步 处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量 安装 环境:CentOS 7.2 1 安装Erlang -y参数表示忽略回答安装yes的过程 yum install -y erlang 2 安装RabbitMQ 切换到根目录,然后下载(这里演示下载3.6.6版,可在官网找不同版本的rpm的链接