启动rocketmq_RocketMQ同步消息、异步消息、单向消息详解

RocketMQ提供同步、异步和单向三种消息发送方式。同步消息等待服务器返回结果;异步消息发送后立即返回,回调通知结果;单向消息直接返回,不等待结果。消费重试机制中,消息在消费异常时会按延迟等级重试,超过一定次数后进入死信队列。实际生产中,通常在重试一定次数后将消息写入数据库处理。
摘要由CSDN通过智能技术生成

一、RocketMQ 支持 3 种消息发送方式 :

1、同步消息(sync message )

producer向 broker 发送消息,执行 API 时同步等待, 直到broker 服务器返回发送结果 。

2、异步消息(async message)

producer向 broker 发送消息时指定消息发送成功及发送异常的回调方法,调用 API 后立即返回,producer发送消息线程不阻塞 ,消息发送成功或失败的回调任务在一个新的线程中执行 。

3、单向消息(oneway message)

producer向 broker 发送消息,执行 API 时直接返回,不等待broker 服务器的结果 。

二、RocketMQ消息结构

RocketMQ的消息包括基础属性和扩展属性两部分:

1、基础属性

1)topic : 主题相当于消息的一级分类,具有相同topic的消息将发送至该topic下的消息队列中,比方说一个电商系统可以分为商品消息、订单消息、物流消息等,就可以在broker中创建商品主题、订单主题等,所有商品的消息发送至该主题下的消息队列中。

2)消息体:即消息的内容 ,可以的字符串、对象等类型(可系列化)。消息的最大长度 是4M。

3) 消息 Flag:消息的一个标记,RocketMQ不处理,留给业务系统使用。

2、扩展属性

1)tag :相当于消息的二级分类,用于消费消息时进行过滤,可为空 。

2)keys: Message 索引键,在运维中可以根据这些 key 快速检索到消息, 可为空 。 3)waitStoreMsgOK :消息发送时是否等消息存储完成后再返回 。

Message 的基础属性主要包括消息所属主题 topic , 消息 Flag(RocketMQ 不做处理)、 扩展属性、消息体 。

三、同步消息

1、创建test-rocketmq生产者工程

1) 创建一个test-rocketmq的测试工程专门用于rocketmq的功能测试。

test-rocketmq父工程的pom.xml如下:

 <?xml version="1.0" encoding="UTF-8"?>          mq         com.pbteach1.0-SNAPSHOT4.0.0      test-rocketmq     pomorg.apache.rocketmq             rocketmq-spring-boot-starter         org.springframework.boot             spring-boot-starter-test         org.springframework.boot             spring-boot-starter-web          ​ 

2)创建rocketmq-producer生产者工程

rocketmq-producer的pom.xml如下

 <?xml version="1.0" encoding="UTF-8"?>          test-rocketmq         com.pbteach1.0-SNAPSHOT4.0.0 ​     rocketmq-producer ​ ​ 

3) 新建rocketmq-producer工程 的application.yml文件

 server:   port: 8181 #服务端口   servlet:     context-path: /rocketmq-producer ​ spring:   application:     name: rocketmq-producer #指定服务名 rocketmq:   nameServer: 127.0.0.1:9876   producer:     group: demo-producer-group

4)新建启动类

  /**  * @author 攀博课堂(www.pbteach.com)  * @version 1.0  **/@SpringBootApplication public class ProducerApplication {      public static void main(String[] args) {         SpringApplication.run(ProducerApplication.class, args);     }  }

2、发送同步消息

 package com.pbteach.test.rocketmq.message; ​ import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; ​ /**  * rocketmq发送消息类  * @author 攀博课堂(www.pbteach.com)  * @version 1.0  **/ @Component public class ProducerSimple { ​     @Autowired     private RocketMQTemplate rocketMQTemplate; ​     /**      * 发送同步消息      * @param topic      * @param msg      */     public void sendSyncMsg(String topic, String 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值