开发过程中使用RocketMq的过程及遇到的问题

本文记录了在项目开发中使用RocketMQ的过程,包括生产者与消费者的实现细节。生产者通过rocketMqTemplate.convertAndSend方法发送消息,消费者则可选择推模式或拉模式,如使用DefaultMQPushConsumer进行集群消费。文章对比了两种消费模式的特性,强调了资源消耗和功能支持的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近开发的业务有使用到rocketMq技术,整体过程及拓展知识记录一下以便学习。

项目流程

在项目中使用的话,大概是分为两层,一层为调用层也可以认为生产者,还有一层为执行层可以为消费者。因为我们的消费者是部署在多台服务器上。所以为了并发消费,提高消费效率,就使用rocketMq向各消费者发送需要消费的消息。每台消费者收到消息去执行自己的一部分业务。

上学习代码(简略代码)

生产者:

@Autowired
RocketMQTemplate rocketMQTemplate;


public void send(){
   
   
	//...省略  在数据库为未执行的业务添加未执行状态0

	rocketMQTemplate.covertAndSend("tipic:tag",参数体)
}


rocketMQTemplate是用于发送消息到RocketMQ的模板类。convertAndSend方法用于将消息对象进行转换,并发送到指定的RocketMQ主题(Topic)中。

注意 在这里第一个参数可以只写主题Topic,或者是主题:tag,只写主体的话,消费者只需要订阅相应的Topic就可以,如果带Tag,那么消费者也需要对应上相应的Tag才能获取到消息。

rocketMqTemplate.convertAndSend中的参数

destination:目标消息主题或者队列的名称。
payload:要发送的消息内容,可以是任意 Java 对象,RocketMqTemplate 会自动将其序列化为消息内容。
messagePostProcessor:消息后处理器,可以对消息进行进一步的处理操作,例如设置消息属性、延迟发送等。
sendCallback:发送消息的回调接口,用于异步发送消息后的处理。
timeout:发送消息的超时时间,单位为毫秒。
delayLevel:消息的延迟级别,用于设置消息的延迟发送时间。
mqMessageConverter:消息转换器,用于将 Java 对象转换为 RocketMQ 的 Message 对象。

示例:

rocketMqTemplate.convertAndSend("myTopic", "Hello, RocketMQ!", message -> {
   
   
    // 设置消息属性
    message.putUserProperty("key", "value");
    return message;
}, new SendCallback() {
   
   
    @Override
    public void onSuccess(SendResult sendResult) {
   
   
        System.out.println("消息发送成功:" + sendResult);
    }

    @Override
    public void onException(Throwable e) {
   
   
        System.err.println("消息发送失败:" + e.getMessage());
    }
}, 3000, 3);

简单生产者

Apa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

似锦_

谢谢金主打赏呀!!

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

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

打赏作者

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

抵扣说明:

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

余额充值