SpringBoot集成RocketMQ

一、软件版本

  • jdk 1.8
  • RocketMQ 4.4.0
  • SpringBoot 2.3.2.RELEASE

二、步骤分析

2.1 消息发送者步骤分析

1.创建消息生产者producer,并制定生产者组名
2.指定Nameserver地址
3.启动producer
4.创建消息对象,指定主题TopicTag和消息体
5.发送消息
6.关闭生产者producer

2.2 消息消费者步骤分析

1.创建消费者Consumer,制定消费者组名
2.指定Nameserver地址
3.订阅主题TopicTag
4.设置回调函数,处理消息
5.启动消费者consumer

三、导入MQ客户端依赖

我们在Pom文件中导入对应的依赖

<!-- rocketmq -->
<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-client</artifactId>
    <version>4.4.0</version>
</dependency>
 <!-- lombok -->
<dependency>
     <groupId>org.projectlombok</groupId>
     <artifactId>lombok</artifactId>
     <scope>provided</scope>
 </dependency>

四、消息发送示例

4.1 基本样例

4.1.1 消息发送

发送同步消息

这种可靠性同步地发送方式使用的比较广泛,比如:重要的消息通知,短信通知。

import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.remoting.common.RemotingHelper;

/**
 * 发送同步消息
 */
public class SyncProducer {
   
   
    public static void main(String[] args) throws Exception {
   
   
        // 1.创建消息生产者producer,并制定生产者组名
        DefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name");
        // 2.设置NameServer的地址
        producer.setNamesrvAddr("192.168.186.128:9876;192.168.186.128:9876");
        // 3.启动Producer实例
        producer.start();
        for (int i = 0; i < 10; i++) {
   
   
            // 4.创建消息,并指定Topic,Tag和消息体
            Message msg = new Message("testTopic" /* Topic */,
                    "OneTag" /* Tag */,
                    ("Hello RocketMQ " + i).getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */
            );
            // 5.发送消息到一个Broker
            SendResult sendResult = producer.send(msg);
            // 通过sendResult返回消息是否成功送达
            System.out.printf("%s%n", sendResult);
        }
        // 6.如果不再发送消息,关闭Producer实例。
        producer.shutdown();
    }
}

发送成功截图如下
在这里插入图片描述

发送异步消息

异步消息通常用在对响应时间敏感的业务场景,即发送端不能容忍长时间地等待Broker的响应。

import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendCallback;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.remoting.common.RemotingHelper;

public class AsyncProducer {
   
   
	public static void main(String[] args) throws Exception {
   
   
    	// 实例化消息生产者Producer
        DefaultMQProducer producer = new DefaultMQProducer("group1");
    	// 设置NameServer的地址
        producer.setNamesrvAddr("192.168.186.128:9876;192.168.186.129:9876");
    	// 启动Producer实例
        producer.start();
        //producer.setRetryTimesWhenSendAsyncFailed(0);
    	for (int i = 0; i < 10; i++) {
   
   
            // 创建消息,并指定Topic,Tag和消息体
                Message msg = new Message("testTopic1",
                    "Tag2 ",
                    "OrderId888",
                    "Hello world".getBytes(RemotingHelper.DEFAULT_CHARSET));
                // SendCallback接收异步返回结果的回调

            producer.send(msg, new SendCallback() {
   
   
                    @Override
                    public void onSuccess(SendResult sendResult) {
   
   
                        System.out.println("发送结果"+sendResult);
                    }
                    @Override
                    public void onException(Throwable e) {
   
    
      	              e.printStackTrace();
                    }
            	});
    	}
        //暂停一秒钟 防止出现Producer被提前关闭
        Thread.sleep(1000);
    	// 如果不再发送消息,关闭Producer实例。
    	producer.shutdown();
    }
}

发送成功截图如下
在这里插入图片描述

单向发送消息

这种方式主要用在不特别关心发送结果的场景,例如日志发送。

import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.remoting.common.RemotingHelper;

public class OnewayProducer {
   
   
	public static void main(String[] args) throws Exception{
   
   
    	// 实例化消息生产者Producer
        DefaultMQProducer producer = new DefaultMQProducer("group1");
    	// 设置NameServer的地址
		producer.setNamesrvAddr("192.168.186.128:9876;192.1
SpringBoot集成RocketMQ可以通过引入RocketMQ的相关依赖和配置来实现。在启动类中,需要添加@SpringBootApplication注解,并在main方法中调用SpringApplication.run方法来启动应用。同时,还需要在启动类中添加@ComponentScan注解来指定需要扫描的包路径。\[1\]\[2\] 在集成RocketMQ的应用中,可以创建一个消息控制器类,使用@RestController注解来标识该类为控制器类。在该类中,可以使用@Autowired注解来注入RocketMQTemplate对象,用于发送消息。通过@RequestMapping注解来定义接口路径和请求方法,可以在方法中调用rocketMQTemplate.convertAndSend方法来发送消息。\[3\] 需要注意的是,在使用RocketMQ的时候,还需要配置JmsConfig.TOPIC,即主题名,确保发送消息和消费消息的主题名一致。\[3\] 总结起来,SpringBoot集成RocketMQ的步骤包括引入依赖、配置启动类、创建消息控制器类和配置主题名。 #### 引用[.reference_title] - *1* *2* [Spring Boot整合Rocketmq](https://blog.csdn.net/qq_18603599/article/details/81172866)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Spring Boot集成RocketMq(一看就会)](https://blog.csdn.net/weixin_44039105/article/details/121755023)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每天吃八顿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值