From 98b1a0affd69bbe63223c21fdd2c404e8bedfccb Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 20 五月 2020 17:25:08 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/div' into 2.1.2

---
 utils/src/main/java/com/qcloud/cmq/Account.java |  766 +++++++++++++++++++++++++++++-----------------------------
 1 files changed, 383 insertions(+), 383 deletions(-)

diff --git a/utils/src/main/java/com/qcloud/cmq/Account.java b/utils/src/main/java/com/qcloud/cmq/Account.java
index 3d4106c..e5731fc 100644
--- a/utils/src/main/java/com/qcloud/cmq/Account.java
+++ b/utils/src/main/java/com/qcloud/cmq/Account.java
@@ -1,383 +1,383 @@
-package com.qcloud.cmq;
-
-import java.util.List;
-import java.util.TreeMap;
-import java.util.Vector;
-import java.lang.Integer;
-
-import com.qcloud.cmq.*;
-import com.qcloud.cmq.Json.*;
-
-/**
- *  CMQ_jAVA_SDK_V1.0.2
- *  Update: Add topic and subscription function
- *  Tips:
- *  1 Account class object is not safty in multy thread.
- *  2 You should init different account for topic or queue
- *  Account class
- * @author York.
- *         Created 2016骞�9鏈�27鏃�.
- */
-public class Account{
-
-
-	protected CMQClient client;
-
-	/**
-	 * @brief
-	 * @param secretId    String 顧�
-	 * @param secretKey   String
-	 * @param endpoint    String  https://cmq-queue-gz.api.qcloud.com
-	 * @param method	  String "POST" or "GET"  default: "POST"
-	 */
-	public Account(String endpoint, String secretId, String secretKey){
-		this.client = new CMQClient(endpoint, "/v2/index.php", secretId, secretKey, "POST");
-	}
-
-	/**
-	 * @brief
-	 * @param secretId    String顧�
-	 * @param secretKey   String
-	 * @param endpoint    https://cmq-queue-gz.api.qcloud.com
-	 * @param path		  String
-	 * @param method	  String "POST" or "GET" default :"POST"
-	 */
-	public Account(String secretId, String secretKey,String endpoint, String path, String method){
-		this.client = new CMQClient(endpoint, path, secretId, secretKey, method);
-	}
-	
-    public void setSignMethod(String Method)
-    {
-    	this.client.setSignMethod(Method);
-    }
-	/**
-	 * create queue
-	 * @param queueName   String queue name
-	 * @param meta        QueueMeta class object
-	 * @throws Exception
-	 * @throws CMQClientException
-	 * @throws CMQServerException
-	 */
-	public void createQueue(String queueName,QueueMeta meta) throws Exception {
-		TreeMap<String, String> param = new TreeMap<String, String>();
-		if(queueName.equals(""))
-			throw new CMQClientException("Invalid parameter:queueName is empty");
-		else
-			param.put("queueName",queueName);
-
-		if(meta.maxMsgHeapNum > 0)
-			param.put("maxMsgHeapNum",Integer.toString(meta.maxMsgHeapNum));
-		if(meta.pollingWaitSeconds > 0)
-			param.put("pollingWaitSeconds",Integer.toString(meta.pollingWaitSeconds));
-		if(meta.visibilityTimeout > 0)
-			param.put("visibilityTimeout",Integer.toString(meta.visibilityTimeout));
-		if(meta.maxMsgSize > 0)
-			param.put("maxMsgSize",Integer.toString(meta.maxMsgSize));
-		if(meta.msgRetentionSeconds > 0)
-			param.put("msgRetentionSeconds",Integer.toString(meta.msgRetentionSeconds));
-
-		String result = this.client.call("CreateQueue", param);
-		JSONObject jsonObj = new JSONObject(result);
-		int code = jsonObj.getInt("code");
-		if(code != 0)
-			throw new CMQServerException(code,jsonObj.getString("message"),jsonObj.getString("requestId"));
-	}
-
-	/**
-	 * delete queue
-	 *
-	 * @param queueName   String queue name
-	 * @throws CMQClientException
-	 * @throws CMQServerException
-	 */
-	public void deleteQueue(String queueName) throws Exception {
-		TreeMap<String, String> param = new TreeMap<String, String>();
-		if(queueName.equals(""))
-			throw new CMQClientException("Invalid parameter:queueName is empty");
-		else
-			param.put("queueName",queueName);
-
-		String result = this.client.call("DeleteQueue", param);
-		JSONObject jsonObj = new JSONObject(result);
-		int code = jsonObj.getInt("code");
-		if(code != 0)
-			throw new CMQServerException(code,jsonObj.getString("message"),jsonObj.getString("requestId"));
-	}
-
-	/**
-	 *  list queue
-	 *
-	 * @param searchWord String
-	 * @param offset     int
-	 * @param limit      int
-	 * @param queueList  List<String>
-	 * @return totalCount int
-	 * @throws Exception
-	 * @throws CMQClientException
-	 * @throws CMQServerException
-	 */
-	public int listQueue(String searchWord, int offset, int limit, List<String> queueList) throws Exception {
-		TreeMap<String, String> param = new TreeMap<String, String>();
-		if(!searchWord.equals(""))
-			param.put("searchWord",searchWord);
-		if(offset >=0 )
-			param.put("offset",Integer.toString(offset));
-		if(limit > 0 )
-			param.put("limit",Integer.toString(limit));
-
-		String result = this.client.call("ListQueue", param);
-		JSONObject jsonObj = new JSONObject(result);
-		int code = jsonObj.getInt("code");
-		if(code != 0)
-			throw new CMQServerException(code,jsonObj.getString("message"),jsonObj.getString("requestId"));
-
-		int totalCount = jsonObj.getInt("totalCount");
-		JSONArray jsonArray = jsonObj.getJSONArray("queueList");
-		for(int i=0;i<jsonArray.length();i++)
-		{
-			JSONObject obj = (JSONObject)jsonArray.get(i);
-			queueList.add(obj.getString("queueName"));
-		}
-
-		return totalCount;
-	}
-
-	/**
-	 * get Queue
-	 * @param queueName  String
-	 * @return Queue object
-	 *
-	 */
-	public Queue getQueue(String queueName){
-		return new Queue(queueName,this.client);
-	}
-
-	/**
-	 * get topic object
-	 * @param topicName String
-	 * @return Topic object
-	 */
-	public Topic getTopic(String topicName)
-	{
-		return new Topic(topicName, this.client);
-	}
-
-
-	/**
-	 * TODO create topic
-	 *
-	 * @param topicName   String
-	 * @param maxMsgSize  int
-     * @param filterType  
-	 * @throws Exception
-	 */
-    public void createTopic(final String topicName, final int maxMsgSize) throws Exception
-    {
-        createTopic(topicName,maxMsgSize,1);
-    }
-	public void createTopic(final String  topicName, final int maxMsgSize, int filterType) throws Exception
-	{
-		TreeMap<String, String> param = new TreeMap<String, String>();
-		if(topicName.equals(""))
-			throw new CMQClientException("Invalid parameter:topicName is empty");
-		else
-			param.put("topicName",topicName);
-
-        param.put("filterType",Integer.toString(filterType));
-		if(maxMsgSize < 1  || maxMsgSize > 65536)
-		    throw new CMQClientException("Invalid parameter: maxMsgSize > 65536 or maxMsgSize < 1");
-
-		param.put("maxMsgSize",Integer.toString(maxMsgSize));
-		String result = this.client.call("CreateTopic", param);
-		JSONObject jsonObj = new JSONObject(result);
-		int code = jsonObj.getInt("code");
-		if(code != 0)
-			throw new CMQServerException(code,jsonObj.getString("message"),jsonObj.getString("requestId"));
-	}
-
-
-	/**
-	 * TODO delete topic
-	 *
-	 * @param topicName  String
-	 * @throws Exception int
-	 */
-	public void deleteTopic(final String topicName) throws Exception
-	{
-		TreeMap<String, String> param = new TreeMap<String, String>();
-		if(topicName.equals(""))
-			throw new CMQClientException("Invalid parameter:topicName is empty");
-		else
-			param.put("topicName",topicName);
-
-		String result = this.client.call("DeleteTopic", param);
-		JSONObject jsonObj = new JSONObject(result);
-		int code = jsonObj.getInt("code");
-		if(code != 0)
-			throw new CMQServerException(code,jsonObj.getString("message"),jsonObj.getString("requestId"));
-	}
-
-
-	/**
-	 * TODO list topic
-	 *
-	 * @param searchWord  String
-	 * @param vTopicList  List<String>
-	 * @param offset      int
-	 * @param limit       int
-	 * @return totalCount int
-	 * @throws Exception
-	 */
-	public int listTopic( final String searchWord, List<String> vTopicList , final int offset ,final int limit) throws Exception
-	{
-		TreeMap<String, String> param = new TreeMap<String, String>();
-		if(!searchWord.equals(""))
-			param.put("searchWord",searchWord);
-		if(offset >=0 )
-			param.put("offset",Integer.toString(offset));
-		if(limit > 0 )
-			param.put("limit",Integer.toString(limit));
-
-		String result = this.client.call("ListTopic", param);
-		JSONObject jsonObj = new JSONObject(result);
-		int code = jsonObj.getInt("code");
-		if(code != 0)
-			throw new CMQServerException(code,jsonObj.getString("message"),jsonObj.getString("requestId"));
-
-
-		int totalCount = jsonObj.getInt("totalCount");
-		JSONArray jsonArray = jsonObj.getJSONArray("topicList");
-
-		vTopicList.clear();
-		for(int i=0;i<jsonArray.length();i++)
-		{
-			JSONObject obj = (JSONObject)jsonArray.get(i);
-		    vTopicList.add(obj.getString("topicName"));
-		}
-		return totalCount;
-	}
-
-	/**
-	 * TODO create subscribe
-	 *
-	 * @param topicName        String
-	 * @param subscriptionName String
-	 * @param Endpoint         String
-	 * @param Protocal		   String
-	 * @throws Exception
-	 */
-	public void createSubscribe(final String topicName, final String subscriptionName, final String Endpoint,final String Protocal) throws Exception
-	{
-		createSubscribe(topicName,subscriptionName, Endpoint,Protocal,null,null,"BACKOFF_RETRY","JSON");
-
-	}
-	/**
-	 * TODO create subscribe
-	 *
-	 * @param topicName           String
-	 * @param subscriptionName	  String
-	 * @param Endpoint            String
-	 * @param Protocal            String
-	 * @param FilterTag           List<String>
-	 * @param NotifyStrategy      String
-	 * @param NotifyContentFormat String
-	 * @throws Exception
-	 */
-	public void createSubscribe(final String topicName, final String subscriptionName, final String Endpoint,final String Protocal,
-			final List<String> FilterTag , final List<String>bindingKey,final String NotifyStrategy, final  String NotifyContentFormat) throws Exception
-	{
-
-
-		if ( FilterTag != null && FilterTag.size() > 5)
-			throw new CMQClientException("Invalid parameter: Tag number > 5");
-
-
-		TreeMap<String, String> param = new TreeMap<String, String>();
-		if(topicName.equals(""))
-			throw new CMQClientException("Invalid parameter:topicName is empty");
-
-		param.put("topicName",topicName);
-
-		if(subscriptionName.equals(""))
-			throw new CMQClientException("Invalid parameter:subscriptionName is empty");
-
-		param.put("subscriptionName", subscriptionName);
-
-		if(Endpoint.equals(""))
-			throw new CMQClientException("Invalid parameter:Endpoint is empty");
-
-		param.put("endpoint", Endpoint);
-
-		if(Protocal.equals(""))
-			throw new CMQClientException("Invalid parameter:Protocal is empty");
-
-		param.put("protocol", Protocal);
-
-		if(NotifyStrategy.equals(""))
-			throw new CMQClientException("Invalid parameter:NotifyStrategy is empty");
-
-		param.put("notifyStrategy", NotifyStrategy);
-
-		if(NotifyContentFormat.equals("") )
-			throw new CMQClientException("Invalid parameter:NotifyContentFormat is empty");
-		param.put("notifyContentFormat", NotifyContentFormat);
-
-		if(FilterTag != null )
-		{
-                      for(int i = 0 ; i < FilterTag.size() ; ++i)
-                            param.put("filterTag."+ Integer.toString(i+1),FilterTag.get(i));
-		}
-		if(bindingKey != null )
-		{
-                      for(int i = 0 ; i < bindingKey.size() ; ++i)
-                            param.put("bindingKey."+ Integer.toString(i+1),bindingKey.get(i));
-		}
-
-		String result = this.client.call("Subscribe", param);
-		JSONObject jsonObj = new JSONObject(result);
-		int code = jsonObj.getInt("code");
-		if(code != 0)
-			throw new CMQServerException(code,jsonObj.getString("message"),jsonObj.getString("requestId"));
-	}
-
-
-	/**
-	 *  delete subscription .
-	 *
-	 * @param topicName          String
-	 * @param subscriptionName   String
-	 * @throws Exception
-	 */
-	public void deleteSubscribe(final String topicName, final String subscriptionName) throws Exception
-	{
-		TreeMap<String, String> param = new TreeMap<String, String>();
-		if(topicName.equals(""))
-			throw new CMQClientException("Invalid parameter:topicName is empty");
-		else
-			param.put("topicName",topicName);
-
-		if(subscriptionName.equals(""))
-			throw new CMQClientException("Invalid parameter:subscriptionName is empty");
-		else
-			param.put("subscriptionName",subscriptionName);
-
-		String result = this.client.call("Unsubscribe", param);
-		JSONObject jsonObj = new JSONObject(result);
-		int code = jsonObj.getInt("code");
-		if(code != 0)
-			throw new CMQServerException(code,jsonObj.getString("message"),jsonObj.getString("requestId"));
-	}
-
-
-	/**
-	 * TODO get a subscription object.
-	 *
-	 * @param topicName          String
-	 * @param subscriptionName	 String
-	 * @return
-	 */
-	public Subscription getSubscription(final String topicName,final String subscriptionName)
-	{
-		return new Subscription(topicName, subscriptionName, this.client);
-	}
-}
+package com.qcloud.cmq;
+
+import java.util.List;
+import java.util.TreeMap;
+import java.util.Vector;
+import java.lang.Integer;
+
+import com.qcloud.cmq.*;
+import com.qcloud.cmq.Json.*;
+
+/**
+ *  CMQ_jAVA_SDK_V1.0.2
+ *  Update: Add topic and subscription function
+ *  Tips:
+ *  1 Account class object is not safty in multy thread.
+ *  2 You should init different account for topic or queue
+ *  Account class
+ * @author York.
+ *         Created 2016骞�9鏈�27鏃�.
+ */
+public class Account{
+
+
+	protected CMQClient client;
+
+	/**
+	 * @brief
+	 * @param secretId    String 顧�
+	 * @param secretKey   String
+	 * @param endpoint    String  https://cmq-queue-gz.api.qcloud.com
+	 * @param method	  String "POST" or "GET"  default: "POST"
+	 */
+	public Account(String endpoint, String secretId, String secretKey){
+		this.client = new CMQClient(endpoint, "/v2/index.php", secretId, secretKey, "POST");
+	}
+
+	/**
+	 * @brief
+	 * @param secretId    String顧�
+	 * @param secretKey   String
+	 * @param endpoint    https://cmq-queue-gz.api.qcloud.com
+	 * @param path		  String
+	 * @param method	  String "POST" or "GET" default :"POST"
+	 */
+	public Account(String secretId, String secretKey,String endpoint, String path, String method){
+		this.client = new CMQClient(endpoint, path, secretId, secretKey, method);
+	}
+	
+    public void setSignMethod(String Method)
+    {
+    	this.client.setSignMethod(Method);
+    }
+	/**
+	 * create queue
+	 * @param queueName   String queue name
+	 * @param meta        QueueMeta class object
+	 * @throws Exception
+	 * @throws CMQClientException
+	 * @throws CMQServerException
+	 */
+	public void createQueue(String queueName,QueueMeta meta) throws Exception {
+		TreeMap<String, String> param = new TreeMap<String, String>();
+		if(queueName.equals(""))
+			throw new CMQClientException("Invalid parameter:queueName is empty");
+		else
+			param.put("queueName",queueName);
+
+		if(meta.maxMsgHeapNum > 0)
+			param.put("maxMsgHeapNum",Integer.toString(meta.maxMsgHeapNum));
+		if(meta.pollingWaitSeconds > 0)
+			param.put("pollingWaitSeconds",Integer.toString(meta.pollingWaitSeconds));
+		if(meta.visibilityTimeout > 0)
+			param.put("visibilityTimeout",Integer.toString(meta.visibilityTimeout));
+		if(meta.maxMsgSize > 0)
+			param.put("maxMsgSize",Integer.toString(meta.maxMsgSize));
+		if(meta.msgRetentionSeconds > 0)
+			param.put("msgRetentionSeconds",Integer.toString(meta.msgRetentionSeconds));
+
+		String result = this.client.call("CreateQueue", param);
+		JSONObject jsonObj = new JSONObject(result);
+		int code = jsonObj.getInt("code");
+		if(code != 0)
+			throw new CMQServerException(code,jsonObj.getString("message"),jsonObj.getString("requestId"));
+	}
+
+	/**
+	 * delete queue
+	 *
+	 * @param queueName   String queue name
+	 * @throws CMQClientException
+	 * @throws CMQServerException
+	 */
+	public void deleteQueue(String queueName) throws Exception {
+		TreeMap<String, String> param = new TreeMap<String, String>();
+		if(queueName.equals(""))
+			throw new CMQClientException("Invalid parameter:queueName is empty");
+		else
+			param.put("queueName",queueName);
+
+		String result = this.client.call("DeleteQueue", param);
+		JSONObject jsonObj = new JSONObject(result);
+		int code = jsonObj.getInt("code");
+		if(code != 0)
+			throw new CMQServerException(code,jsonObj.getString("message"),jsonObj.getString("requestId"));
+	}
+
+	/**
+	 *  list queue
+	 *
+	 * @param searchWord String
+	 * @param offset     int
+	 * @param limit      int
+	 * @param queueList  List<String>
+	 * @return totalCount int
+	 * @throws Exception
+	 * @throws CMQClientException
+	 * @throws CMQServerException
+	 */
+	public int listQueue(String searchWord, int offset, int limit, List<String> queueList) throws Exception {
+		TreeMap<String, String> param = new TreeMap<String, String>();
+		if(!searchWord.equals(""))
+			param.put("searchWord",searchWord);
+		if(offset >=0 )
+			param.put("offset",Integer.toString(offset));
+		if(limit > 0 )
+			param.put("limit",Integer.toString(limit));
+
+		String result = this.client.call("ListQueue", param);
+		JSONObject jsonObj = new JSONObject(result);
+		int code = jsonObj.getInt("code");
+		if(code != 0)
+			throw new CMQServerException(code,jsonObj.getString("message"),jsonObj.getString("requestId"));
+
+		int totalCount = jsonObj.getInt("totalCount");
+		JSONArray jsonArray = jsonObj.getJSONArray("queueList");
+		for(int i=0;i<jsonArray.length();i++)
+		{
+			JSONObject obj = (JSONObject)jsonArray.get(i);
+			queueList.add(obj.getString("queueName"));
+		}
+
+		return totalCount;
+	}
+
+	/**
+	 * get Queue
+	 * @param queueName  String
+	 * @return Queue object
+	 *
+	 */
+	public Queue getQueue(String queueName){
+		return new Queue(queueName,this.client);
+	}
+
+	/**
+	 * get topic object
+	 * @param topicName String
+	 * @return Topic object
+	 */
+	public Topic getTopic(String topicName)
+	{
+		return new Topic(topicName, this.client);
+	}
+
+
+	/**
+	 * TODO create topic
+	 *
+	 * @param topicName   String
+	 * @param maxMsgSize  int
+     * @param filterType  
+	 * @throws Exception
+	 */
+    public void createTopic(final String topicName, final int maxMsgSize) throws Exception
+    {
+        createTopic(topicName,maxMsgSize,1);
+    }
+	public void createTopic(final String  topicName, final int maxMsgSize, int filterType) throws Exception
+	{
+		TreeMap<String, String> param = new TreeMap<String, String>();
+		if(topicName.equals(""))
+			throw new CMQClientException("Invalid parameter:topicName is empty");
+		else
+			param.put("topicName",topicName);
+
+        param.put("filterType",Integer.toString(filterType));
+		if(maxMsgSize < 1  || maxMsgSize > 65536)
+		    throw new CMQClientException("Invalid parameter: maxMsgSize > 65536 or maxMsgSize < 1");
+
+		param.put("maxMsgSize",Integer.toString(maxMsgSize));
+		String result = this.client.call("CreateTopic", param);
+		JSONObject jsonObj = new JSONObject(result);
+		int code = jsonObj.getInt("code");
+		if(code != 0)
+			throw new CMQServerException(code,jsonObj.getString("message"),jsonObj.getString("requestId"));
+	}
+
+
+	/**
+	 * TODO delete topic
+	 *
+	 * @param topicName  String
+	 * @throws Exception int
+	 */
+	public void deleteTopic(final String topicName) throws Exception
+	{
+		TreeMap<String, String> param = new TreeMap<String, String>();
+		if(topicName.equals(""))
+			throw new CMQClientException("Invalid parameter:topicName is empty");
+		else
+			param.put("topicName",topicName);
+
+		String result = this.client.call("DeleteTopic", param);
+		JSONObject jsonObj = new JSONObject(result);
+		int code = jsonObj.getInt("code");
+		if(code != 0)
+			throw new CMQServerException(code,jsonObj.getString("message"),jsonObj.getString("requestId"));
+	}
+
+
+	/**
+	 * TODO list topic
+	 *
+	 * @param searchWord  String
+	 * @param vTopicList  List<String>
+	 * @param offset      int
+	 * @param limit       int
+	 * @return totalCount int
+	 * @throws Exception
+	 */
+	public int listTopic( final String searchWord, List<String> vTopicList , final int offset ,final int limit) throws Exception
+	{
+		TreeMap<String, String> param = new TreeMap<String, String>();
+		if(!searchWord.equals(""))
+			param.put("searchWord",searchWord);
+		if(offset >=0 )
+			param.put("offset",Integer.toString(offset));
+		if(limit > 0 )
+			param.put("limit",Integer.toString(limit));
+
+		String result = this.client.call("ListTopic", param);
+		JSONObject jsonObj = new JSONObject(result);
+		int code = jsonObj.getInt("code");
+		if(code != 0)
+			throw new CMQServerException(code,jsonObj.getString("message"),jsonObj.getString("requestId"));
+
+
+		int totalCount = jsonObj.getInt("totalCount");
+		JSONArray jsonArray = jsonObj.getJSONArray("topicList");
+
+		vTopicList.clear();
+		for(int i=0;i<jsonArray.length();i++)
+		{
+			JSONObject obj = (JSONObject)jsonArray.get(i);
+		    vTopicList.add(obj.getString("topicName"));
+		}
+		return totalCount;
+	}
+
+	/**
+	 * TODO create subscribe
+	 *
+	 * @param topicName        String
+	 * @param subscriptionName String
+	 * @param Endpoint         String
+	 * @param Protocal		   String
+	 * @throws Exception
+	 */
+	public void createSubscribe(final String topicName, final String subscriptionName, final String Endpoint,final String Protocal) throws Exception
+	{
+		createSubscribe(topicName,subscriptionName, Endpoint,Protocal,null,null,"BACKOFF_RETRY","JSON");
+
+	}
+	/**
+	 * TODO create subscribe
+	 *
+	 * @param topicName           String
+	 * @param subscriptionName	  String
+	 * @param Endpoint            String
+	 * @param Protocal            String
+	 * @param FilterTag           List<String>
+	 * @param NotifyStrategy      String
+	 * @param NotifyContentFormat String
+	 * @throws Exception
+	 */
+	public void createSubscribe(final String topicName, final String subscriptionName, final String Endpoint,final String Protocal,
+			final List<String> FilterTag , final List<String>bindingKey,final String NotifyStrategy, final  String NotifyContentFormat) throws Exception
+	{
+
+
+		if ( FilterTag != null && FilterTag.size() > 5)
+			throw new CMQClientException("Invalid parameter: Tag number > 5");
+
+
+		TreeMap<String, String> param = new TreeMap<String, String>();
+		if(topicName.equals(""))
+			throw new CMQClientException("Invalid parameter:topicName is empty");
+
+		param.put("topicName",topicName);
+
+		if(subscriptionName.equals(""))
+			throw new CMQClientException("Invalid parameter:subscriptionName is empty");
+
+		param.put("subscriptionName", subscriptionName);
+
+		if(Endpoint.equals(""))
+			throw new CMQClientException("Invalid parameter:Endpoint is empty");
+
+		param.put("endpoint", Endpoint);
+
+		if(Protocal.equals(""))
+			throw new CMQClientException("Invalid parameter:Protocal is empty");
+
+		param.put("protocol", Protocal);
+
+		if(NotifyStrategy.equals(""))
+			throw new CMQClientException("Invalid parameter:NotifyStrategy is empty");
+
+		param.put("notifyStrategy", NotifyStrategy);
+
+		if(NotifyContentFormat.equals("") )
+			throw new CMQClientException("Invalid parameter:NotifyContentFormat is empty");
+		param.put("notifyContentFormat", NotifyContentFormat);
+
+		if(FilterTag != null )
+		{
+                      for(int i = 0 ; i < FilterTag.size() ; ++i)
+                            param.put("filterTag."+ Integer.toString(i+1),FilterTag.get(i));
+		}
+		if(bindingKey != null )
+		{
+                      for(int i = 0 ; i < bindingKey.size() ; ++i)
+                            param.put("bindingKey."+ Integer.toString(i+1),bindingKey.get(i));
+		}
+
+		String result = this.client.call("Subscribe", param);
+		JSONObject jsonObj = new JSONObject(result);
+		int code = jsonObj.getInt("code");
+		if(code != 0)
+			throw new CMQServerException(code,jsonObj.getString("message"),jsonObj.getString("requestId"));
+	}
+
+
+	/**
+	 *  delete subscription .
+	 *
+	 * @param topicName          String
+	 * @param subscriptionName   String
+	 * @throws Exception
+	 */
+	public void deleteSubscribe(final String topicName, final String subscriptionName) throws Exception
+	{
+		TreeMap<String, String> param = new TreeMap<String, String>();
+		if(topicName.equals(""))
+			throw new CMQClientException("Invalid parameter:topicName is empty");
+		else
+			param.put("topicName",topicName);
+
+		if(subscriptionName.equals(""))
+			throw new CMQClientException("Invalid parameter:subscriptionName is empty");
+		else
+			param.put("subscriptionName",subscriptionName);
+
+		String result = this.client.call("Unsubscribe", param);
+		JSONObject jsonObj = new JSONObject(result);
+		int code = jsonObj.getInt("code");
+		if(code != 0)
+			throw new CMQServerException(code,jsonObj.getString("message"),jsonObj.getString("requestId"));
+	}
+
+
+	/**
+	 * TODO get a subscription object.
+	 *
+	 * @param topicName          String
+	 * @param subscriptionName	 String
+	 * @return
+	 */
+	public Subscription getSubscription(final String topicName,final String subscriptionName)
+	{
+		return new Subscription(topicName, subscriptionName, this.client);
+	}
+}

--
Gitblit v1.8.0