springboot集成rocketmq,实现普通消息、顺序消息、延迟消息、事物消息

本文介绍了如何在SpringBoot中集成RocketMQ,包括普通消息、顺序消息、延迟消息和事务消息的实现。详细讲解了RocketMQ事务消息的原理、流程及使用限制,以及消息积压的处理策略和MessageQueue的分配策略。
摘要由CSDN通过智能技术生成

安装:

RocketMQ详细安装教程(RocketMQ安装、RocketMQ修改默认端口、console管理后台安装)_Xd聊架构的博客-CSDN博客

1.broker.conf配置

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
namesrvAddr=111.111.111.111:9876
brokerIP1=111.111.111.111
messageDelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h 1d 2d
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true

2.启动

nohup sh bin/mqnamesrv &
nohup sh bin/mqbroker -n 111.111.111.111:9876 -c ./conf/broker.conf &

3.引入依赖

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

4.配置

rocketmq:
  name-server: 111.111.111.111:9876
  producer:
    group: producer_group # 必须指定group
    send-message-timeout: 3000 # 消息发送超时时长,默认3s
    retry-times-when-send-failed: 3 # 同步发送消息失败重试次数,默认2
    retry-times-when-send-async-failed: 3 # 异步发送消息失败重试次数,默认2

5普通消息-生产者

异步消息一样的,只是多一个collback函数接收结果

@Slf4j
@Component
public class RocketmqSendProducer {

    @Autowired
    private RocketMQTemplate rocketMQTemplate;


    public void sendMsg(OrderTimeOutMessage orderTimeOutMessage) {
        Message<OrderTimeOutMessage> message = MessageBuilder.withPayload(orderTimeOutMessage).build();
        SendResult sendResult = rocketMQTemplate.syncSend("topic_temp", message);
        log.info("【发送同步消息】sendResult={}", JSON.toJSONString(sendResult));
    }

    public void sendTagMsg(OrderTimeOutMessage orderTimeOutMessage) {
        Message<OrderTimeOutMessage> message = MessageBuilder.withPayload(orderTimeOutMessage).build();
        SendResult sendResult =  rocketMQTemplate.syncSend("topic_temp" + ":tag1", message);
        log.info("【发送同步标签消息】sendResult={}", JSON.toJSONString(sendResult));
    }

    public void sendTagMsgs(OrderTimeOutMessage orderTimeOutMessage) {
        List<Message> list = new ArrayList<>();
        for (int i = 0; i < 5; i++) {
            Message<OrderTimeOutMessage> message = MessageBuilder.withPayload(orderTimeOutMessage).build();
            list.add(message);
        }
        SendResult sendResult =  rocketMQTemplate.syncSend("topic_temp" + ":tag1", list);
        log.info("【发送同步批量标签消息】sendResult={}", JSON.toJSONString(sendResult));
    }


    public void sendDelayMsg(OrderTimeOutMessage orderTimeOutMessage) {
        //1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h
        Message<OrderTimeOutMessage> message = MessageBuilder.withPayload(orderTimeOutMessage).build();
        SendResult sendResult =  rocketMQTemplate.syncSend("topic_temp", message, 3000 , 3);
        log.info("【发送延迟消息】sendResult={}", JSON.toJSONString(sendResult));
    }


    public void sendOrdelyMessage(OrderTimeOutMessage orderTimeOutMessage){
        String uuid = UUID.randomUUID().toString();
        for (int i = 0; i < 10; i++) {
            Message<OrderTimeOutMessage> message = MessageBuilder.withPayload(orderTimeOutMessage).setHeader(RocketMQHeaders.KEYS, uuid).build();
            SendResult sendResult = rocketMQTemplate.syncSendOrderly("topic_order", mes
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringBoot中整合RocketMQ发送事务消息的步骤如下: 首先,定义一个生产者类,使用@Component注解将其标记为一个组件,并使用@Autowired注解注入RocketMQTemplate实例。在该类中,可以编写一个sendMsg方法来发送消息。该方法接受两个参数,分别是topic和msg,使用MessageBuilder构建一个消息对象,并通过rocketMQTemplate的sendMessageInTransaction方法发送消息。需要注意的是,该方法的第一个参数要与@RocketMQTransactionListener注解中的txProducerGroup属性保持一致。\[1\] 其次,定义一个消费者类,使用@Component和@RocketMQMessageListener注解将其标记为一个组件,并指定topic和consumerGroup。该类需要实现RocketMQListener接口,并实现其中的onMessage方法,用于处理接收到的消息。\[2\] 最后,在引导类中使用@SpringBootApplication注解标记该类为Spring Boot应用程序的入口,并在main方法中调用SpringApplication的run方法启动应用程序。\[3\] 通过以上步骤,就可以在SpringBoot中整合RocketMQ发送事务消息了。 #### 引用[.reference_title] - *1* *2* *3* [springboot 整合 rocketmq 发送事务消息](https://blog.csdn.net/weixin_42494845/article/details/109362030)[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^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值