MNS服务批量删除问题

简介: 阿里云MNS因为管理控制台不支持队列或主题的批量删除,所以如果使用者有很多的队列或主题的时候,手动一个一个删除会特别的麻烦且耗时。下面介绍使用Java语言结合官方SDK进行快速批量删除。

概述

阿里云MNS因为管理控制台不支持队列或主题的批量删除,所以如果使用者有很多的队列或主题的时候,手动一个一个删除会特别的麻烦且耗时。下面介绍使用Java语言结合官方SDK进行快速批量删除。

操作步骤

1、ak,sk参数获取:阿里云常见参数获取位置

2、endpoint参数获取
_

3、pom.xml

        <dependency>
            <groupId>com.aliyun.mns</groupId>
            <artifactId>aliyun-sdk-mns</artifactId>
            <version>1.1.8</version>
            <classifier>jar-with-dependencies</classifier>
        </dependency>

4、Code Sample

import com.aliyun.mns.client.CloudAccount;
import com.aliyun.mns.client.MNSClient;
import com.aliyun.mns.model.PagingListResult;
import com.aliyun.mns.model.QueueMeta;
import com.aliyun.mns.model.TopicMeta;
import java.util.List;

public class DeleteQueueOrTopicDemo {

    public static void main(String[] args) {

        //初始参数设置 ak,sk信息及对应区域所在的地址
        String accessKeyId = "********";
        String accessKeySecret = "********";
        String endpoint = "http://********.mns.cn-********.aliyuncs.com/";

        CloudAccount account = new CloudAccount(accessKeyId, accessKeySecret, endpoint);
        MNSClient client = account.getMNSClient();

        String prefix = ""; //全部删除设置
        String marker = "";
        Integer retNumber = 10000;
//        deleteQueues(client, prefix, marker, retNumber); // 删除队列
        deleteTopics(client, prefix, marker, retNumber);  // 删除主题

        client.close();
    }

    /***
     * delete queue
     * @param client client对象
     * @param prefix 队列名称前缀,如果是批量全部删除,直接使用 "" 即可
     * @param marker 列举的起始位置,""表示从第一个开始,也可以是前一次列举返回的marker
     * @param retNumber 最多返回的个数
     */
    public static void deleteQueues(MNSClient client,String prefix,String marker,Integer retNumber)
    {
        PagingListResult<QueueMeta> listResult = client.listQueue(prefix, marker, retNumber);

        System.out.println(listResult.getResult().size());
        List<QueueMeta> queues = listResult.getResult();

        //循环遍历删除Queue
        int i = 0;

        System.out.println(queues.size());
        if(queues.size() != 0) {

            for (QueueMeta queue : queues) {
                //删除消息队列
                String queueName = queue.getQueueName();
                client.getQueueRef(queueName).delete();
                i++;
                System.out.println("Delete queue " + queueName);
            }
        }else{
            System.out.println("没有满足筛选条件的队列");
        }

        System.out.println("The number of deleted queues is" + i);
    }

    /**
     * delete topic
     * @param client client对象
     * @param prefix 主题名称前缀,如果是批量全部删除,直接使用 "" 即可
     * @param marker 列举的起始位置,""表示从第一个开始,也可以是前一次列举返回的marker
     * @param retNumber 最多返回的个数
     */
    public static void deleteTopics(MNSClient client,String prefix,String marker,Integer retNumber)
    {
        PagingListResult<TopicMeta> listResult = client.listTopic(prefix, marker, retNumber);

        List<TopicMeta> topics = listResult.getResult();

        //循环遍历删除Queue
        int i = 0;

        if (topics.size() != 0) {
            //循环遍历删除Topic
            for (TopicMeta topic : topics) {
                //删除消息Topic
                String topicName = topic.getTopicName();
                client.getTopicRef(topicName).delete();
                System.out.println("Delete Topic " + topicName);
                i++;
            }
        }
        else{
            System.out.println("没有满足筛选条件的主题");
        }
        System.out.println("The number of deleted topics is" + i);
    }
}

参考链接

MNS Java SDK下载

相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
21天前
|
消息中间件 网络协议 物联网
MQTT常见问题之物联网设备端申请动态注册时MQTT服务不可用如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
28天前
|
NoSQL Java Redis
小白版的springboot中集成mqtt服务(超级无敌详细),实现不了掐我头!!!
小白版的springboot中集成mqtt服务(超级无敌详细),实现不了掐我头!!!
226 1
|
4月前
|
消息中间件 Linux 网络安全
Linux下源码安装RabbitMQ并设置服务开机启动
Linux下源码安装RabbitMQ并设置服务开机启动
78 0
|
2月前
|
传感器 监控 物联网
golang开源的可嵌入应用程序高性能的MQTT服务
golang开源的可嵌入应用程序高性能的MQTT服务
199 3
|
7月前
|
消息中间件 Java Linux
rocketmq linux注册服务开机启动配置
rocketmq linux注册服务开机启动配置
254 1
|
2月前
|
网络协议 Go 数据安全/隐私保护
golang开源的可嵌入应用程序高性能的MQTT服务
golang开源的可嵌入应用程序高性能的MQTT服务
248 2
|
6天前
|
网络协议 Java 物联网
阿里云服务器上搭建 MQTT服务
阿里云服务器上搭建 MQTT服务
|
4月前
|
消息中间件 开发工具 数据安全/隐私保护
RabbitMQ【部署 01】一篇学会RabbitMQ服务依赖的下载安装及简单使用(首次登录 User can only log in via localhost 问题处理)
RabbitMQ【部署 01】一篇学会RabbitMQ服务依赖的下载安装及简单使用(首次登录 User can only log in via localhost 问题处理)
75 0
|
7月前
|
消息中间件 网络协议 Ubuntu
在Ubuntu Linux系统上安装RabbitMQ服务并解决公网远程访问问题
在Ubuntu Linux系统上安装RabbitMQ服务并解决公网远程访问问题
|
8月前
|
消息中间件 网络协议 Ubuntu
内网穿透实现在外远程连接RabbitMQ服务
RabbitMQ是一个在 AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一。由erlang开发的AMQP(Advanced Message Queue 高级消息队列协议 )的开源实现,由于erlang 语言的高并发特性,性能较好,本质是个队列,FIFO 先入先出,里面存放的内容是message,下面介绍通过在ubuntu+cpolar+rabbitMQ环境下,实现mq服务端远程访问。
内网穿透实现在外远程连接RabbitMQ服务

热门文章

最新文章