MQ的学习

RocketMQ基本原理

简单生产者书写

启动NAMESERVER;

java 复制代码
start mqnamesrv.cmd

启动BROKER;

java 复制代码
start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true
java 复制代码
public static void main(String[] args) throws Exception {
        //1、谁来发
        DefaultMQProducer producer = new DefaultMQProducer("group1");
        //2、发给谁   nameserver的地址  它掌管所有地址
        producer.setNamesrvAddr("localhost:9876");
        producer.start();
        //3、怎么发
        //4、发什么
        Message msg = new Message("topic1", "hello rocketmq".getBytes("UTF-8"));
        SendResult result = producer.send(msg);
        //5、发送的结果
        System.out.println("返回结果:" + result);
        //6、打扫战场
        producer.shutdown();



    }
}

简单消费者书写

多消费者模式

负载均衡(集群模式)

广播模式

默认是集群模式

即集群模式下,同个主题对于不同组是"广播模式",每个组都会消费同个消息;会重复消费;对于同个组是"集群模式",每个消费者平坦消息,不会重复消费;

多生产者模式

消息类型

同步、异步、单向消息

延时消息

单向消息:写日志文件等

延时消息:游戏、推送玩家回归等

批量消息:

tag过滤

用于:用于处理普通消息和vip消息

消息(sql)过滤

消费可追加属性、这个可以用于过滤消息、比如年龄大于18等;

springboot整合-生产者

java 复制代码
@Autowired
    RocketMQTemplate rocketMQTemplate;

    @GetMapping("/send")
    public String send() {
//        String msg = "Hello World";
//        Message message = new Message("topic9", "tag1", msg.getBytes());
//        rocketMQTemplate.send(message);

//        rocketMQTemplate.send(MessageBuilder.withPayload("Hello World").build());
        rocketMQTemplate.convertAndSend("topic", "hello");

        return "success";
    }
java 复制代码
rocketmq:
  name-server: localhost:9876
  producer:
    group: group1
server:
  port: 8081

springboot整合消费者

其余设置

顺序消息错乱

事务消息

面试题

集群

高级特性

消息存储特性

高校读写的两个特性

顺序写:预先预留空间、加快速度

零拷贝:

消息存储的物理地址

刷盘机制

异步输盘:

写入内存、积累一定量;或积累一定时间内、写入磁盘;

高可用性

用到MQ、毕竟是引入新特性、可用性会降低;

从以下四个方面解释

负载均衡

循环平均分配更好

消息重试

死信队列

消费重复消费

重复消费的原因:

相关推荐
虹科网络安全6 分钟前
艾体宝干货|数据复制详解:类型、原理与适用场景
java·开发语言·数据库
axng pmje31 分钟前
Java语法进阶
java·开发语言·jvm
rKWP8gKv743 分钟前
Java微服务性能监控:Prometheus与Grafana集成方案
java·微服务·prometheus
老前端的功夫1 小时前
【Java从入门到入土】28:Stream API:告别for循环的新时代
java·开发语言·python
qq_435287921 小时前
第9章 夸父逐日与后羿射日:死循环与进程终止?十个太阳同时值班的并行冲突
java·开发语言·git·死循环·进程终止·并行冲突·夸父逐日
小江的记录本1 小时前
【Kafka核心】架构模型:Producer、Broker、Consumer、Consumer Group、Topic、Partition、Replica
java·数据库·分布式·后端·搜索引擎·架构·kafka
止语Lab1 小时前
从手动到框架:Go DI 演进的三个拐点
开发语言·后端·golang
yaoxin5211231 小时前
397. Java 文件操作基础 - 创建常规文件与临时文件
java·开发语言·python
小短腿的代码世界1 小时前
Qt日志系统深度解析:从qDebug到企业级日志框架
开发语言·qt
REDcker2 小时前
浏览器端Web程序性能分析与优化实战 DevTools指标与工程清单
开发语言·前端·javascript·vue·ecmascript·php·js