![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
消息中间件MQ
文章平均质量分 79
记录 ActiveMQ RabbitMQ RocketMQ Kafka学习笔记
筑梦之人
这个作者很懒,什么都没留下…
展开
-
Kafka生产者和消费者,并保证数据有序
生产者package com.msb.bigdata.spark.streamingimport java.util.Propertiesimport java.util.concurrent.Futureimport org.apache.kafka.clients.producer.{KafkaProducer, ProducerConfig, ProducerRecord, RecordMetadata}import org.apache.kafka.common.serializati原创 2021-06-26 14:41:54 · 302 阅读 · 2 评论 -
消息队列 — RabbitMQ07
7 延迟队列7.1 概念延时队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素是希望在指定时间到了以后或之前取出和处理,延时队列是用来存放需要在指定时间被处理的元素的队列。7.2 使用场景订单在十分钟之内未支付则自动取消新创建的店铺,如果在十天内都没有上传过商品,则自动发送消息提醒用户注册成功后,如果三天内没有登陆则进行短信提醒用户发起退款,如果三天内没有得到处理则通知相关运营人员预定会议后,需要在预定的时间点前十分钟通知各个与会人员参加会议7.原创 2021-12-23 18:04:32 · 1086 阅读 · 0 评论 -
消息队列 — RabbitMQ06
6 死信队列6.1 死信的概念死信,顾名思义就是无法被消费的消息,一般来说,producer将消息投递到broker或者直接到queue里了,consumer从queue取出消息进行消费,但某些时候由于特定的原因导致queue中的某些消息无法被消费,这样的消息如果没有后续的处理,就变成了死信,有死信自然就有了死信队列。6.2. 死信的来源消息TTL过期队列达到最大长度(队列满了,无法再添加数据到mq中)消息被拒绝(basic.reject或basic.nack)并且requeue=f原创 2021-12-23 15:50:27 · 799 阅读 · 0 评论 -
消息队列 — RabbitMQ05
5 交换机前面创建了一个工作队列。我们假设的是工作队列背后,每个任务都恰好交付给一个消费者(工作进程)。在这一部分中,我们将做一些完全不同的事情-我们将消息传达给多个消费者。这种模式称为 ”发布/订阅”.为了说明这种模式,我们将构建一个简单的日志系统。它将由两个程序组成:第一个程序将发出日志消息,第二个程序是消费者。其中我们会启动两个消费者,其中一个消费者接收到消息后把日志存储在磁盘,另外一个消费者接收到消息后把消息打印在屏幕上,事实上第一个程序发出的日志消息将广播给所有消费者。5.1. Exchang原创 2021-12-22 14:36:03 · 180 阅读 · 0 评论 -
消息队列 — RabbitMQ04
4 发布确认4.1 发布确认原理生产者将信道设置成confirm模式,一旦信道进入confirm模式,所有在该信道上面发布的消息都将会被指派一个唯一的ID(从1开始),一旦消息被投递到所有匹配的队列之后,broke就会发送一个确认给生产者(包含消息的唯一ID),这就使得生产者知道消息已经正确到达目的队列了,如果消息和队列是可持久化的,那么确认消息会在将消息写入磁盘之后发出,broker回传给生产者的确认消息中delivery-tag域包含了确认消息的序列号,此外broker也可以设置basic.ack的原创 2021-12-22 11:43:22 · 488 阅读 · 0 评论 -
消息队列 — RabbitMQ03
3 工作队列工作队列(又称任务队列)的主要思想是避免立即执行资源密集型任务,而不得不等待它完成。相反我们安排任务在之后执行。我们把任务封装为消息并将其发送到队列。在后台运行的工作进程将弹出任务并最终执行作业。当有多个工作线程时,这些工作线程将一起处理这些任务。3.1 轮询分发消息在这个案例中我们会启动两个工作线程,一个消息发送线程,我们来看看他们两个工作线程是如何工作的。3.1.1 抽取工具类package com.zjw.rabbitmq.util;import com.rabbitmq.c原创 2021-12-22 11:42:36 · 708 阅读 · 0 评论 -
消息队列 — RabbitMQ02
2 RabbitMQ1.2.1 RabbitMQ 的概念RabbitMQ 是一个消息中间件:它接受并转发消息。你可以把它当做一个快递站点,当你要发送一个包裹时,你把你的包裹放到快递站,快递员最终会把你的快递送到收件人那里,按照这种逻辑 RabbitMQ 是一个快递站,一个快递员帮你传递快件。RabbitMQ 与快递站的主要区别在于,它不处理快件而是接收,存储和转发消息数据。1.2.2 四大核心概念生产者:产生数据发送消息的程序是生产者交换机:交换机是 RabbitMQ 非常重要的一个部件,一方面它原创 2021-12-22 11:41:42 · 126 阅读 · 0 评论 -
消息队列 — RabbitMQ01
1 MQ 的相关概念1.1.1 什么是MQMQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不用依赖其他服务。1.1.2 为什么要用MQ1、流量消峰举个例子,如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰绰有余,正常时段原创 2021-12-22 11:40:15 · 84 阅读 · 0 评论 -
消息中间件之ActiveMQ — 07
集群配置官方文档主备集群官方文档Master Slave TypeRequirementsProsConsShared File System Master Slave共享文件系统,如SAN需要运行多个slave。当master挂掉之后会自动进行故障恢复需要共享文件系统JDBC Master Slave共享数据库需要运行多个slave。当master挂掉之后会自动进行故障恢复需要一个共享的数据库。 也相对缓慢,因为它不能使用高性能日志Replicate原创 2021-12-19 19:07:48 · 283 阅读 · 0 评论 -
消息中间件之ActiveMQ — 06
使用细节Topic加强 可追溯消息避免topic下错过消息. 官方文档消费者设置Destination topic = session.createTopic("test?consumer.retroactive=true");可用的恢复策略策略Sample Configuration描述FixedSizedSubscriptionRecoveryPolicy在RAM中为按时间顺序清除的消息历史记录保留固定数量的内存。FixedCountSubscription原创 2021-12-17 15:39:09 · 428 阅读 · 0 评论 -
消息中间件之ActiveMQ — 05
高级使用queue browser可以查看队列中的消息而不消费,没有订阅的功能package com.zjw.activemq.browser;import java.util.Enumeration;import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.QueueBrowser;import javax.jms.Session;import javax.jms.TextMessag原创 2021-12-16 00:45:25 · 1750 阅读 · 0 评论 -
消息中间件之ActiveMQ — 04
ActiveMQ服务监控Hawtio官方网站https://hawt.io独立jar包的形式运行java -jarhawtio单程序运行,可以对多个远程ActiveMQ服务器进行监控嵌入ActiveMQ下载war包复制到webapps下jetty.xml bean标签下添加<bean class="org.eclipse.jetty.webapp.WebAppContext"> <property name="contextPath" v原创 2021-12-15 21:19:56 · 421 阅读 · 0 评论 -
消息中间件之ActiveMQ — 03
Springboot整合ActiveMQPOM依赖配置<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apa原创 2021-12-15 20:59:42 · 228 阅读 · 0 评论 -
消息中间件之ActiveMQ — 02
常用API事务事务采用commit和rollback来提交和回滚事务:session.commit();session.rollback();签收模式签收代表接收端的session已收到消息的一次确认,反馈给broker,分别为以下三种:Session.AUTO_ACKNOWLEDGE:当客户端从receiver或onMessage成功返回时,Session自动签收客户端的这条消息的收条。Session.CLIENT_ACKNOWLEDGE:客户端通过调用消息(Message)的a原创 2021-12-15 19:40:30 · 908 阅读 · 1 评论 -
消息中间件之ActiveMQ — 01
什么是JMS MQ全称:Java MessageService 中文:Java 消息服务。JMS是Java的一套API标准,最初的目的是为了使应用程序能够访问现有的MO系统(MessageOriented Middleware),MOM指的是利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。后来被许多现有的MOM供应商采用,并实现为MOM系统。常见MOM系统包括Apache的ActiveMQ、 阿里巴巴的RocketMQ、IBM的MQSeries、Microsof原创 2021-12-15 18:28:54 · 315 阅读 · 0 评论