本文目錄一覽:
如何搭建windows azure 開發環境 for xp
一. JDK安裝
如果你還沒有JDK的話,可以去這裡下載,接下來的工作就是安裝提示一步一步走。設置環境變量步驟如下:
我的電腦-屬性-高級-環境變量-系統變量中添加以下環境變量:
1.JAVA_HOME值為: D:\Program Files\Java\jdk1.6.0_18(你安裝JDK的目錄)
2.CLASSPATH值為:.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\bin;
3.Path: 在開始追加 %JAVA_HOME%\bin;
NOTE:前面三步設置環境變量對搭建Android開發環境不是必須的,可以跳過。
安裝完成之後,可以在檢查JDK是否安裝成功。打開cmd窗口,輸入java –version 查看JDK的版本信息。出現類似下面的畫面表示安裝成功了:
由於我使用的是Windows操作系統,目前只以XP系統作為講解,稍後會補上Linux的環境搭建。
1.首先下載Eclipse,去下載Eclipse開發IDE,
選擇【Eclipse IDE for Java Developers 】的Windows版本進行下載。
2.去下載JDK 6。
3.去下載Andorid SDK。
4.解壓縮Eclipse、Andoridsdk,安裝JDK 6。
5.啟動Eclipse,點擊【Help】,選中【Install New Software】
進入安裝界面後,點擊【Add】,在【Name】寫上Android,在【Location】寫上 ,
然後選擇Work With 【Android】,
會出現“Developer Tools”,選中並一路【Next】後點擊【Install】進行安裝後,Eclipse重新啟動。
6.對Eclipse進行配置,點擊【Window】,選擇【Preferences】,點擊【Android】,
在【SDK Location】位置上選擇Android SDK解壓後的位置,
點擊【Apply】,我們再對JDK進行配置
選擇【JAVA】,點擊【Installed JREs】,點擊【Add】,選擇【Standard VM】,點擊【Next】
在【JRE name】上寫上JDK名稱,我寫的是JDK 6,然後點擊【Directory】選擇JDK 6的安裝位置,點擊【Finish】
選中自己新建的JDK,點擊【ok】。
7.最後一步,創建AVD(Android 虛擬設備),點擊【Window】,選擇【Android AVD Manager】
在【Create AVD】欄目中,【Name】填寫虛擬設備的名稱,【Target】選擇Android版本,
【SDCard】是SD卡,【Skin】是選擇設備的外觀
這個是我選擇的配置,最後點擊【Create AVD】,點擊【Finish】完成,中間會出來提示,請點擊【OK】。
怎麼使用Windows Azure Queue Storage 服務
若要執行存儲操作,您需要一個 Windows Azure 存儲帳戶。可通過以下步驟創建存儲帳戶。(也可以使用 REST API 創建存儲帳戶。)
登錄到 Windows Azure 管理門戶。
在導航窗格的底部,單擊“新建”。
+新建
依次單擊“數據服務”、“存儲”和“快速創建”。
“快速創建”對話框
在 URL 中,鍵入要在存儲帳戶的 URI 中使用的子域名稱。輸入的名稱可包含 3-24 個小寫字母和數字。此值將成為用於對訂閱的 Blob、隊列或表資源進行尋址的 URI 中的主機名。
選擇要在其中查找存儲的區域/地緣組。如果要使用 Windows Azure 應用程序中的存儲,請選擇要在其中部署該應用程序的區域。
還可以選擇啟用異地複製。
單擊“創建存儲帳戶”。
創建 Java 應用程序
在本指南中,您將使用存儲功能,這些功能可在 Java 應用程序中本地運行,或在 Windows Azure 的 Web 角色或輔助角色中運行的代碼中運行。假定您已下載並安裝 Java 開發工具包 (JDK),並已按照下載 Windows Azure SDK for Java 中的說明進行操作來安裝 Windows Azure Libraries for Java 和 Windows Azure SDK,還在 Windows Azure 訂閱中創建了 Windows Azure 存儲帳戶。您可以使用任何開發工具(包括“記事本”)創建應用程序。您只要能夠編譯 Java 項目和引用 Windows Azure Libraries for Java 即可。
配置您的應用程序以訪問隊列存儲
將下列導入語句添加到要在其中使用 Windows Azure 存儲 API 以訪問隊列的 Java 文件的頂部:
// Include the following imports to use queue APIs
import com.microsoft.windowsazure.services.core.storage.*;
import com.microsoft.windowsazure.services.queue.client.*;
設置 Windows Azure 存儲連接字符串
Windows Azure 存儲客戶端使用存儲連接字符串來存儲用於訪問數據管理服務的終結點和憑據。在客戶端應用程序中運行時,必須提供以下格式的存儲連接字符串,並對 AccountName 和 AccountKey 值使用管理門戶中列出的存儲帳戶的名稱和存儲帳戶的主訪問密鑰。此示例演示如何聲明用於保存連接字符串的靜態字段:
// Define the connection-string with your values
public static final String storageConnectionString =
“DefaultEndpointsProtocol=http;” +
“AccountName=your_storage_account;” +
“AccountKey=your_storage_account_key”;
在 Windows Azure 的角色中運行的應用程序中,此字符串可存儲在服務配置文件 ServiceConfiguration.cscfg 中,並可通過調用 RoleEnvironment.getConfigurationSettings 方法進行訪問。下面是從服務配置文件中名為 StorageConnectionString 的 Setting 元素中獲取連接字符串的示例:
// Retrieve storage account from connection-string
String storageConnectionString =
RoleEnvironment.getConfigurationSettings().get(“StorageConnectionString”);
如何:創建隊列
利用 CloudQueueClient 對象,可以獲得隊列的引用對象。以下代碼將創建 CloudQueueClient 對象。
本指南中的所有代碼都使用聲明了上述兩種方式之一的存儲連接字符串。還可以通過其他方式創建 CloudStorageAccount 對象。有關詳細信息,請參閱 Javadocs 文檔中的 CloudStorageAccount。
// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
使用 CloudQueueClient 對象獲取對要使用的隊列的引用。如果隊列不存在,您可以創建它。
// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference(“myqueue”);
// Create the queue if it doesn’t already exist
queue.createIfNotExist();
如何:向隊列添加消息
若要將消息插入現有隊列,請先創建一條新的 CloudQueueMessage。緊接着,調用 addMessage 方法。可從字符串(UTF-8 格式)或字節數組創建 CloudQueueMessage。以下代碼將創建隊列(如果隊列不存在)並插入消息“Hello, World”。
// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference(“myqueue”);
// Create the queue if it doesn’t already exist
queue.createIfNotExist();
// Create a message and add it to the queue
CloudQueueMessage message = new CloudQueueMessage(“Hello, World”);
queue.addMessage(message);
如何:查看下一條消息
通過調用 peekMessage,可以查看隊列前面的消息,而不必從隊列中將其刪除。
// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference(“myqueue”);
// Peek at the next message
CloudQueueMessage peekedMessage = queue.peekMessage();
如何:取消對下一條消息的排隊
您的代碼通過兩個步驟取消在隊列中對消息的排隊。在調用 retrieveMessage 時,您將獲得隊列中的下一條消息。從 retrieveMessage 返回的消息變得對從此隊列讀取消息的任何其他代碼不可見。默認情況下,此消息將持續 30 秒不可見。若要完全從隊列中刪除消息,您還必須調用 deleteMessage。此刪除消息的兩步過程可確保當您的代碼因硬件或軟件故障而無法處理消息時,您的其他代碼實例可以獲取同一消息並重試。您的代碼在處理消息後會立即調用 deleteMessage。
// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference(“myqueue”);
// Retrieve the first visible message in the queue
CloudQueueMessage retrievedMessage = queue.retrieveMessage();
// Process the message in less than 30 seconds, and then delete the message.
queue.deleteMessage(retrievedMessage);
如何:更改已排隊消息的內容
您可以更改隊列中已就位消息的內容。如果消息表示工作任務,則可以使用此功能更新工作任務的狀態。以下代碼使用新內容更新隊列消息,並將可見性超時設置為再延長 60 秒。這將保存與消息關聯的工作的狀態,並額外為客戶端提供一分鐘的時間來繼續處理消息。可使用此方法跟蹤隊列消息上的多步驟工作流,即使處理步驟因硬件或軟件故障而失敗,也無需從頭開始操作。通常,您還可以保留重試計數,如果某條消息的重試次數超過 n 次,您將刪除此消息。這可避免消息在每次處理時都觸發應用程序錯誤。
// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference(“myqueue”);
// Retrieve the first visible message in the queue
CloudQueueMessage message = queue.retrieveMessage();
// Modify the message content and set it to be visible in 60 seconds
message.setMessageContent(“Updated contents.”);
EnumSetMessageUpdateFields updateFields =
EnumSet.of(MessageUpdateFields.CONTENT, MessageUpdateFields.VISIBILITY);
queue.updateMessage(message, 60, updateFields, null, null);
用於對消息取消排隊的其他方法
您可以通過兩種方式自定義隊列中的消息檢索。首先,您可以獲取一批消息(最多 32 個)。其次,您可以設置更長或更短的不可見超時,從而允許您的代碼使用更多或更少的時間來徹底處理每條消息。
以下代碼示例使用 retrieveMessages 方法通過一次調用獲取 20 條消息。然後,它使用 for 循環來處理每條消息。它還將每條消息的不可見超時設置為五分鐘(300 秒)。請注意,這五分鐘超時對於所有消息都是同時開始的,因此在調用 retrieveMessages 五分鐘後,尚未刪除的任何消息都將再次變得可見。
// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference(“myqueue”);
// Retrieve 20 messages from the queue with a visibility timeout of 300 seconds
for (CloudQueueMessage message : queue.retrieveMessages(20, 300, null, null)) {
// Do processing for all messages in less than 5 minutes,
// deleting each message after processing.
queue.deleteMessage(message);
}
如何:獲取隊列長度
您可以獲得隊列中消息的估計數。downloadAttributes 方法會詢問隊列服務一些當前值,包括隊列中消息的計數。此計數僅為近似值,因為只能在隊列服務響應您的請求後添加或刪除消息。getApproximateMethodCount 方法返回通過調用 downloadAttributes 檢索到的最後一個值,而不會調用隊列服務。
// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference(“myqueue”);
// Download the approximate message count from the server
queue.downloadAttributes();
// Retrieve the newly cached approximate message count
long cachedMessageCount = queue.getApproximateMessageCount();
如何:刪除隊列
若要刪除隊列及其包含的所有消息,請對隊列對象調用 delete 方法。
// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference(“myqueue”);
// Delete the queue
queue.delete();
如何使用隊列存儲服務
若要執行存儲操作,您需要一個 Windows Azure 存儲帳戶。可通過以下步驟創建存儲帳戶。(也可以使用 REST API 創建存儲帳戶。)
登錄到 Windows Azure 管理門戶。
在導航窗格的底部,單擊“新建”。
+新建
依次單擊“數據服務”、“存儲”和“快速創建”。
“快速創建”對話框
在 URL 中,鍵入要在存儲帳戶的 URI 中使用的子域名稱。輸入的名稱可包含 3-24 個小寫字母和數字。此值將成為用於對訂閱的 Blob、隊列或表資源進行尋址的 URI 中的主機名。
選擇要在其中查找存儲的區域/地緣組。如果要使用 Windows Azure 應用程序中的存儲,請選擇要在其中部署該應用程序的區域。
還可以選擇啟用異地複製。
單擊“創建存儲帳戶”。
創建 Java 應用程序
在本指南中,您將使用存儲功能,這些功能可在 Java 應用程序中本地運行,或在 Windows Azure 的 Web 角色或輔助角色中運行的代碼中運行。假定您已下載並安裝 Java 開發工具包 (JDK),並已按照下載 Windows Azure SDK for Java 中的說明進行操作來安裝 Windows Azure Libraries for Java 和 Windows Azure SDK,還在 Windows Azure 訂閱中創建了 Windows Azure 存儲帳戶。您可以使用任何開發工具(包括“記事本”)創建應用程序。您只要能夠編譯 Java 項目和引用 Windows Azure Libraries for Java 即可。
配置您的應用程序以訪問隊列存儲
將下列導入語句添加到要在其中使用 Windows Azure 存儲 API 以訪問隊列的 Java 文件的頂部:
// Include the following imports to use queue APIs
import com.microsoft.windowsazure.services.core.storage.*;
import com.microsoft.windowsazure.services.queue.client.*;
設置 Windows Azure 存儲連接字符串
Windows Azure 存儲客戶端使用存儲連接字符串來存儲用於訪問數據管理服務的終結點和憑據。在客戶端應用程序中運行時,必須提供以下格式的存儲連接字符串,並對 AccountName 和 AccountKey 值使用管理門戶中列出的存儲帳戶的名稱和存儲帳戶的主訪問密鑰。此示例演示如何聲明用於保存連接字符串的靜態字段:
// Define the connection-string with your values
public static final String storageConnectionString =
“DefaultEndpointsProtocol=http;” +
“AccountName=your_storage_account;” +
“AccountKey=your_storage_account_key”;
在 Windows Azure 的角色中運行的應用程序中,此字符串可存儲在服務配置文件 ServiceConfiguration.cscfg 中,並可通過調用 RoleEnvironment.getConfigurationSettings 方法進行訪問。下面是從服務配置文件中名為 StorageConnectionString 的 Setting 元素中獲取連接字符串的示例:
// Retrieve storage account from connection-string
String storageConnectionString =
RoleEnvironment.getConfigurationSettings().get(“StorageConnectionString”);
如何:創建隊列
利用 CloudQueueClient 對象,可以獲得隊列的引用對象。以下代碼將創建 CloudQueueClient 對象。
本指南中的所有代碼都使用聲明了上述兩種方式之一的存儲連接字符串。還可以通過其他方式創建 CloudStorageAccount 對象。有關詳細信息,請參閱 Javadocs 文檔中的 CloudStorageAccount。
// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
使用 CloudQueueClient 對象獲取對要使用的隊列的引用。如果隊列不存在,您可以創建它。
// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference(“myqueue”);
// Create the queue if it doesn’t already exist
queue.createIfNotExist();
如何:向隊列添加消息
若要將消息插入現有隊列,請先創建一條新的 CloudQueueMessage。緊接着,調用 addMessage 方法。可從字符串(UTF-8 格式)或字節數組創建 CloudQueueMessage。以下代碼將創建隊列(如果隊列不存在)並插入消息“Hello, World”。
// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference(“myqueue”);
// Create the queue if it doesn’t already exist
queue.createIfNotExist();
// Create a message and add it to the queue
CloudQueueMessage message = new CloudQueueMessage(“Hello, World”);
queue.addMessage(message);
如何:查看下一條消息
通過調用 peekMessage,可以查看隊列前面的消息,而不必從隊列中將其刪除。
// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference(“myqueue”);
// Peek at the next message
CloudQueueMessage peekedMessage = queue.peekMessage();
如何:取消對下一條消息的排隊
您的代碼通過兩個步驟取消在隊列中對消息的排隊。在調用 retrieveMessage 時,您將獲得隊列中的下一條消息。從 retrieveMessage 返回的消息變得對從此隊列讀取消息的任何其他代碼不可見。默認情況下,此消息將持續 30 秒不可見。若要完全從隊列中刪除消息,您還必須調用 deleteMessage。此刪除消息的兩步過程可確保當您的代碼因硬件或軟件故障而無法處理消息時,您的其他代碼實例可以獲取同一消息並重試。您的代碼在處理消息後會立即調用 deleteMessage。
// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference(“myqueue”);
// Retrieve the first visible message in the queue
CloudQueueMessage retrievedMessage = queue.retrieveMessage();
// Process the message in less than 30 seconds, and then delete the message.
queue.deleteMessage(retrievedMessage);
如何:更改已排隊消息的內容
您可以更改隊列中已就位消息的內容。如果消息表示工作任務,則可以使用此功能更新工作任務的狀態。以下代碼使用新內容更新隊列消息,並將可見性超時設置為再延長 60 秒。這將保存與消息關聯的工作的狀態,並額外為客戶端提供一分鐘的時間來繼續處理消息。可使用此方法跟蹤隊列消息上的多步驟工作流,即使處理步驟因硬件或軟件故障而失敗,也無需從頭開始操作。通常,您還可以保留重試計數,如果某條消息的重試次數超過 n 次,您將刪除此消息。這可避免消息在每次處理時都觸發應用程序錯誤。
// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference(“myqueue”);
// Retrieve the first visible message in the queue
CloudQueueMessage message = queue.retrieveMessage();
// Modify the message content and set it to be visible in 60 seconds
message.setMessageContent(“Updated contents.”);
EnumSetMessageUpdateFields updateFields =
EnumSet.of(MessageUpdateFields.CONTENT, MessageUpdateFields.VISIBILITY);
queue.updateMessage(message, 60, updateFields, null, null);
用於對消息取消排隊的其他方法
您可以通過兩種方式自定義隊列中的消息檢索。首先,您可以獲取一批消息(最多 32 個)。其次,您可以設置更長或更短的不可見超時,從而允許您的代碼使用更多或更少的時間來徹底處理每條消息。
以下代碼示例使用 retrieveMessages 方法通過一次調用獲取 20 條消息。然後,它使用 for 循環來處理每條消息。它還將每條消息的不可見超時設置為五分鐘(300 秒)。請注意,這五分鐘超時對於所有消息都是同時開始的,因此在調用 retrieveMessages 五分鐘後,尚未刪除的任何消息都將再次變得可見。
// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference(“myqueue”);
// Retrieve 20 messages from the queue with a visibility timeout of 300 seconds
for (CloudQueueMessage message : queue.retrieveMessages(20, 300, null, null)) {
// Do processing for all messages in less than 5 minutes,
// deleting each message after processing.
queue.deleteMessage(message);
}
如何:獲取隊列長度
您可以獲得隊列中消息的估計數。downloadAttributes 方法會詢問隊列服務一些當前值,包括隊列中消息的計數。此計數僅為近似值,因為只能在隊列服務響應您的請求後添加或刪除消息。getApproximateMethodCount 方法返回通過調用 downloadAttributes 檢索到的最後一個值,而不會調用隊列服務。
// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference(“myqueue”);
// Download the approximate message count from the server
queue.downloadAttributes();
// Retrieve the newly cached approximate message count
long cachedMessageCount = queue.getApproximateMessageCount();
如何:刪除隊列
若要刪除隊列及其包含的所有消息,請對隊列對象調用 delete 方法。
// Retrieve storage account from connection-string
CloudStorageAccount storageAccount =
CloudStorageAccount.parse(storageConnectionString);
// Create the queue client
CloudQueueClient queueClient = storageAccount.createCloudQueueClient();
// Retrieve a reference to a queue
CloudQueue queue = queueClient.getQueueReference(“myqueue”);
// Delete the queue
queue.delete();
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/307045.html