java实现并消费rocketmq数据并将数据上传到存储服务器上

该博客介绍了如何使用Java实现RocketMQ的消息生产和消费,并将数据上传到MinIO存储服务器(7.0.2和8.3.0版本)以及阿里云OSS。详细讲解了各个步骤,包括分片上传视频到MinIO,以及通过Postman接口测试RocketMQ数据生产。同时提供了不同版本的MinIO和阿里云OSS的操作示例,以及源码下载链接。
摘要由CSDN通过智能技术生成

功能点说明

安装相应rocketmq和minio

rocketmq相关

rocketmq生产数据
rocketmq消费数据

minio相关(7.0.2版本)

minio上传数据
minio下载数据
minio删除数据

阿里云OSS

阿里云oss上传数据
阿里云oss下载数据(获取下载地址)
阿里云oss删除数据

minio相关(8.3.0版本)

minio上传数据(8.3.0版本)
minio下载数据(8.3.0版本)
minio删除数据(8.3.0版本)

特别篇

java实现将视频分片上传到minio(一):视频分片
java实现将视频分片上传到minio(二):视频文件写入到minio

实现效果

rocketmq生产数据

postman调用接口生产数据
imgContent为图片base数据
rocketmq控制台显示数据(需登录rocketmq控制台):
rocketmq控制台显示数据
数据状态(目前订阅者还未在线,未被消费):
目前订阅者还未在线

rocketmq消费数据

程序断点显示数据
在这里插入图片描述
数据状态(已被消费):
数据消费状态

minio上传下载展示

minio上传数据
minio数据上传展示

minio数据下载

http://127.0.0.1:9001/test1/data/20210922/S0004440020010200401012020090915000229/S0004440020010200401012020090915000229_1632317832373.jpg

数据下载示例
在这里插入图片描述

阿里云OSS上传下载展示

阿里云OSS上传展示
oss上传展示
阿里云OSS下载展示
oss下载

版本

minio版本(7.0.2版本)

  <!-- https://mvnrepository.com/artifact/io.minio/minio -->
        <dependency>
            <groupId>io.minio</groupId>
            <artifactId>minio</artifactId>
            <version>7.0.2</version>
        </dependency>

minio版本(8.3.0)

 <dependency>
            <groupId>io.minio</groupId>
            <artifactId>minio</artifactId>
            <version>8.3.0</version>
            <exclusions>
                <exclusion>
                    <groupId>com.squareup.okhttp3</groupId>
                    <artifactId>okhttp</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>4.8.1</version>
            <scope>compile</scope>
        </dependency>

移除okhttp并自己添加okhttp的原因:
minio(8.3.0)引入异常问题

aliyun-sdk-oss版本

<!-- OSS SDK 相关依赖 -->
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.8.0</version>
        </dependency>
        

ons-client中包含了rocketmq(也可以直接引起rocketmq的版本)

  <!-- https://mvnrepository.com/artifact/com.aliyun.openservices/ons-client -->
        <dependency>
            <groupId>com.aliyun.openservices</groupId>
            <artifactId>ons-client</artifactId>
            <version>1.8.8.Final</version>
        </dependency>

源码地址

订阅私信博主,免费下载。
java实现并消费rocketmq数据并将数据上传到存储服务器-minio(7.0.2)源码地址
(推荐)java实现并消费rocketmq数据并将数据上传到存储服务器-minio(8.3.0)源码地址

java交流群(限订阅了的加):868794080

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在多台服务器上部署多个MQ的情况下,为了避免重复消费,可以采用以下两种方式: 1. 使用MQ的消息分组功能:在将消息发布到MQ时,可以设置消息的分组ID,让不同的消息被分到不同的分组,然后在每个消费者实例设置相同的分组ID,这样每个消费者实例只会消费其所属的分组的消息。 2. 使用MQ的消息去重功能:在消费消息时,可以将已经消费过的消息的ID记录下来,下次再消费消息时,先检查该消息ID是否已经被消费过,如果已经被消费过,则不再进行消费。 下面是Java代码示例: 使用RocketMQ的消息分组功能: ``` DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("consumer_group"); consumer.subscribe("topic_name", "*"); consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET); consumer.setMessageListener(new MessageListenerConcurrently() { @Override public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) { for (MessageExt msg : msgs) { // 处理消息 } return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; } }); consumer.start(); ``` 使用Redis的消息去重功能: ``` // 消费消息 public void consumeMessage(Message message) { String messageId = message.getMessageId(); if (redisTemplate.opsForValue().setIfAbsent(messageId, "1")) { // 处理消息 redisTemplate.expire(messageId, 60, TimeUnit.SECONDS); } else { // 消息已经被消费过 } } ``` 这里使用了Redis的setIfAbsent方法来判断消息ID是否已经存在,如果不存在则将其写入Redis,并设置过期时间。如果消息ID已经存在,则说明该消息已经被消费过,不再进行消费。同时,为了避免Redis存储的消息ID占用过多内存,可以为其设置过期时间,使其自动过期。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一枚开发小咸鱼

原创不宜,请作者喝杯咖啡吧。

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

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

打赏作者

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

抵扣说明:

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

余额充值