天天看點

MNS服務批量删除問題

作者:俏巴

操作步驟

1、ak,sk參數擷取:

阿裡雲常見參數擷取位置

2、endpoint參數

擷取
MNS服務批量删除問題

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下載下傳