RocketMQTemplate的基本使用方法

1、pom.xml依赖

<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-spring-boot-starter</artifactId>
	 <version>2.0.3</version>
</dependency>

2、配置文件

# RocketMQ 相关配置
rocketmq:
  # 指定 nameServer
  name-server: 127.0.0.1:9876
  # Producer 生产者
  producer:
    group: my-group  # 指定发送者组名
    send-message-timeout: 3000 # 发送消息超时时间,单位:毫秒。默认为 3000 。
    compress-message-body-threshold: 4096 # 消息压缩阀值,当消息体的大小超过该阀值后,进行消息压缩。默认为 4 * 1024B
    max-message-size: 4194304 # 消息体的最大允许大小。。默认为 4 * 1024 * 1024B
    retry-times-when-send-failed: 2 # 同步发送消息时,失败重试次数。默认为 2 次。
    retry-times-when-send-async-failed: 2 # 异步发送消息时,失败重试次数。默认为 2 次。
    retry-next-server: false # 发送消息给 Broker 时,如果发送失败,是否重试另外一台 Broker 。默认为 false


3、RocketMQTemplate的基本方法

首先使用@Autowired注入RocketMQTemplate(后面直接使用,就不特殊说明)

@Autowired
private RocketMQTemplate rocketMQTemplate;

简单使用:

package com.example.rocketmq.controller;

import org.apache.rocketmq.client.producer.SendCallback;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * 消息发送方
 */
@Component
public class Producer {

    @Autowired
    private RocketMQTemplate rocketMQTemplate;

    /**
     * 普通字符串消息
     */
    public void sendMessage() {
        String json = "普通消息";
        rocketMQTemplate.convertAndSend("sendMessage", json);
    }

    /**
     * 同步消息
     */
    public void syncSend() {
        String json = "同步消息";
        SendResult sendMessage = rocketMQTemplate.syncSend("sendMessage", json);
        System.out.println(sendMessage);
    }

    /**
     * 异步消息
     */
    public void asyncSend() {
        String json = "异步消息";
        SendCallback callback = new SendCallback() {
            @Override
            public void onSuccess(SendResult sendResult) {
                System.out.println("123");
            }

            @Override
            public void onException(Throwable throwable) {
                System.out.println("456");
            }
        };
        rocketMQTemplate.asyncSend("sendMessage", json, callback);
    }

    /**
     * 单向消息
     */
    public void onewaySend() {
        String json = "单向消息";
        rocketMQTemplate.sendOneWay("sendMessage", json);
    }
}

package com.example.rocketmq.controller;

import org.apache.rocketmq.spring.annotation.MessageModel;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component;

/**
 * 消息消费方
 * 1.如果两个消费者group和topic都一样,则二者轮循接收消息
 * 2.如果两个消费者topic一样,而group不一样,则消息变成广播机制
 * RocketMQListener<>泛型必须和接收的消息类型相同
 */
@Component
@RocketMQMessageListener(
        topic = "sendMessage",                      // 1.topic:消息的发送者使用同一个topic
        consumerGroup = "test-group",               // 2.group:不用和生产者group相同 ( 在RocketMQ中消费者和发送者组没有关系 )
        selectorExpression = "*",                   // 3.tag:设置为 * 时,表示全部。
        messageModel = MessageModel.CLUSTERING    // 4.消费模式:默认 CLUSTERING ( CLUSTERING:负载均衡 )( BROADCASTING:广播机制 )
)
public class Consumer implements RocketMQListener<String> {

    @Override
    public void onMessage(String str) {
        try {
            // 睡眠五十毫秒,确保消息成功接收(演示专用,勿喷)
            Thread.sleep(50);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(str);
    }
}
  • 17
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
RocketMQTemplate是一个RocketMQ提供的消息发送模板,用于发送消息到RocketMQ消息队列中。可以在项目的配置文件application.properties中增加MQ的配置内容,如name-server、producer.group、producer.send-message-timeout、producer.access-key和producer.secret-key等。使用RocketMQTemplate可以发送普通消息和同步消息。 发送普通消息时,RocketMQTemplate的convertAndSend方法用于发送消息,参数包括消息主题和消息内容。例如,在Spring Boot项目中,可以通过注入RocketMQTemplate对象来发送消息。 发送同步消息时,RocketMQTemplate的syncSend方法用于发送消息并等待服务器回应。这种方式可以确保消息发送成功,并可以根据返回结果进行后续处理。 需要注意的是,在使用RocketMQTemplate发送消息之前,需要先配置RocketMQ的相关信息,如name-server和生产者的相关属性。可以通过在项目的配置文件application.properties中配置相关信息,或者通过代码中的注解或方法进行配置。然后,可以使用RocketMQTemplate发送消息到指定的消息队列中。 总结起来,RocketMQTemplateRocketMQ提供的消息发送模板,用于发送消息到RocketMQ消息队列中。可以通过配置文件或代码中的注解或方法配置相关信息,然后使用RocketMQTemplate方法发送普通消息和同步消息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [RocketMQTemplate基本使用](https://blog.csdn.net/u010066934/article/details/124847542)[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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [RocketMQ保姆级教程](https://blog.csdn.net/weixin_45630885/article/details/126364185)[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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值