springboot简单整合rocketmq

Spring Boot中整合RocketMQ以实现生产者-消费者模型,首先需要添加RocketMQ的依赖项到你的项目中。

1、添加依赖

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

接下来,你需要在你的Spring Boot应用程序中创建生产者和服务消费者。以下是一个简单的例子:

2、生产者(Producer):

import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.apache.rocketmq.common.message.Message;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class Producer {
    @Autowired
    private RocketMQTemplate rocketMQTemplate;

    public void send(String topic, String message) {
        Message msg = new Message(topic, message.getBytes());
        rocketMQTemplate.syncSend(topic, msg);
    }
}

3、消费者(Consumer):

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

@Service
@RocketMQMessageListener(topic = "test", consumerGroup = "consumer-group")
public class Consumer implements RocketMQListener<String> {
    @Override
    public void onMessage(String message) {
        System.out.println("Received message: " + message);
    }
}

在这个例子中,生产者使用RocketMQTemplate来发送消息到名为“test”的主题。消费者通过实现RocketMQListener接口来监听并处理来自同一主题的消息。当消息被接收时,它将被传递给onMessage方法,这个方法将打印出消息的内容。

注意:

你需要在你的应用程序的配置文件中指定RocketMQ的NameServer地址,如下:

rocketmq.name-server=127.0.0.1:9876

此外,你也需要配置你的主题消费者组,这可以通过在配置文件中添加以下属性来实现:

rocketmq.consumer.group=consumer-group
rocketmq.topic=test

以上就是在Spring Boot中整合RocketMQ以实现生产者-消费者模型的基本步骤。

二、rocketmq监听死信队列(延迟)

在RocketMQ中,使用死信队列(DLQ)实现消息延迟发送的原理是,将需要延迟的消息发送到死信队列中,并设置消息的延迟级别,到达指定的延迟级别后,消息会自动从死信队列中发送到目标队列,从而完成消息的延迟处理。

下面是使用Spring Boot和RocketMQ实现死信队列完成消息延迟的步骤:

配置RocketMQ的死信队列
在RocketMQ中,每个队列都有一个对应的死信队列,用于存放处理失败或者需要延迟处理的消息。要使用死信队列,需要在RocketMQ的配置文件中指定死信队列的名称。

1、 在RocketMQ的配置文件中添加以下内容

broker.conf=broker.xml
messageStore.conf=messageStore.xml
namesrv.conf=namesrv.xml
deadLetterQueue.1=/test/queue/deadletter

2、创建消息生产者

在Spring Boot中创建消息生产者,将需要延迟的消息发送到死信队列中。

@Autowired
private DefaultMQProducer producer;

public void sendDelayMessage(String message) {
    // 创建死信队列的标签
    String deadLetterQueue = "deadLetterQueue";
    // 将需要延迟的消息发送到死信队列中
    producer.send(new Message(deadLetterQueue.getBytes(), message.getBytes()));
}

3、创建消息消费者

在Spring Boot中创建消息消费者,监听死信队列的消息,并处理消息。

@Autowired
private DefaultMQPushConsumer consumer;

public void consumeDelayMessage() {
    // 监听死信队列的消息
    consumer.subscribe("deadLetterQueue");
    // 处理消息
    consumer.registerMessageListener((MessageListenerConcurrently) (msgs, context) -> {
        for (MessageExt msg : msgs) {
            String message = new String(msg.getBody());
            // 处理消息
            System.out.println("Received delay message: " + message);
        }
        return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
    });
    // 启动消费者
    consumer.start();
}

4、配置延迟级别

在RocketMQ中,每个队列都有一个默认的延迟级别,可以在RocketMQ的配置文件中进行配置。要延迟特定的时间,需要在发送消息时指定延迟级别。例如,要延迟10秒钟,可以将延迟级别设置为10。

在上述代码中,我们没有指定延迟级别,因此消息会立即发送到死信队列中。要实现延迟,我们可以在发送消息时指定一个延迟级别,例如,将延迟级别设置为10,则消息会在10秒后自动发送到目标队列中。具体实现可以参考RocketMQ的官方文档。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值