本文介紹使用.NET SDK接入雲訊息佇列 RocketMQ 版的環境準備工作,以便您後續使用.NET SDK收發訊息。
- 推薦您使用最新的RocketMQ 5.x系列SDK,5.x系列SDK作為主力研發版本,和雲訊息佇列 RocketMQ 版5.x服務端完全相容,提供了更全面的功能並支援更多增強特性。更多資訊,請參見5.x系列SDK。
- RocketMQ 4.x/3.x系列SDK和ONS系列SDK後續僅做功能維護,建議僅存量業務使用。
Windows .NET SDK簡介
阿里雲提供的.NET版本是基於雲訊息佇列 RocketMQ 版的CPP版本的託管封裝,這樣能保證.NET完全不依賴於Windows.NET公用庫。內部採用C++多線程並發處理,保證.NET版本的高效穩定。
在使用Visual Studio(VS)開發.NET的應用程式和類庫時,預設的目標平台為“Any CPU”,即運行時可根據CPU類型自動選擇x86或x64。在運行時,CLR才會將其JIT發射為x86或x64的機器碼。而C/C++編譯產生的DLL就是機器碼。所以,其平台的決策是在編譯時間決定的。通過編譯選項的設定,將C/C++專案編譯為x64的64位DLL,因此提供了包含VS2015和.NET Framework 4.5.2編譯的release64位版本DLL。其他VS版本也可以使用。
.NET SDK僅支援Windows 64-bit作業系統。
C++ DLL檔案需要Visual C++ 2015運行時環境安裝包。如果沒有安裝Visual Studio 2015運行時環境,請執行SDK中提供的vc_redist.x64.exe來完成安裝。
下載Windows .NET SDK
新使用者或者不考慮升級成本的老使用者請下載新版SDK。最新版本的.NET SDK下載連結,請參見版本說明。
下載完成後進行解壓,會有以下目錄結構,各目錄的說明如下:
lib/
底層的C++ DLL相關檔案,以及Visual C++ 2015運行時環境安裝包。如果沒有安裝Visual Studio 2015運行時環境,需要拷貝安裝vc_redist.x64.exe,如下所示。
64/ ONSClient4CPP.lib ONSClient4CPP.dll ONSClient4CPP.pdb vc_redist.x64.exe
demo/
包含了普通訊息發送、Oneway訊息發送、順序訊息發送、普通訊息消費、順序訊息消費等程式碼範例。
interface/
封裝PINVOKE調用的代碼,需要包含到您的專案代碼中。
SDK_GUIDE.pdf
SDK環境準備文檔和FAQ。
changelog
新版本發布解決的問題和引入的新特性列表。
Visual Studio 2015使用.NET SDK配置說明
使用Visual Studio 2015建立自己的專案。
按右鍵專案選擇添加 > 現存在項,將下載的SDK中的interface目錄下的所有檔案都添加進去。
按右鍵專案選擇
。設定活動解決方案配置為release;設定活動解決方案平台為x64。編寫測試程式,然後進行編譯,最後將SDK下的DLL放到和可執行檔同一級目錄下,或者系統目錄下即可運行。
說明SDK提供了設定好的Demo,直接開啟工程進行編譯即可。啟動並執行時候將相關的DLL檔案拷貝到和可執行檔同級目錄下,如下圖。
Visual Studio 2015配置ASP.NET使用雲訊息佇列 RocketMQ 版SDK
使用VS2015建立一個ASP.NET的Web Forms專案。
按右鍵專案選擇
。設定活動解決方案配置為release;設定活動解決方案平台為x64。按右鍵專案選擇
,將下載的SDK中的interface目錄下的所有檔案都添加進去。請參考上文中配置普通的.NET專案的步驟2。
在Global.asax.cs檔案中添加啟動和關閉SDK的代碼。
重要建議將SDK的代碼封裝成一個單例類,這樣可以避免因為範圍的問題被記憶體回收行程回收。SDK的example目錄下提供了一個Example.cs,實現了一個簡單的單例實現。您需要把Example.cs包含到自己的專案中才能使用。
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Optimization; using System.Web.Routing; using System.Web.Security; using System.Web.SessionState; using ons; // 這個命名空間是SDK所在的命名空間。 using test; // 這是一個簡單封裝SDK的類所在命名空間,建SDK的example目錄下的Example.cs。 namespace WebApplication4 { public class Global : HttpApplication { void Application_Start(object sender, EventArgs e) { // Code that runs on application startup RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); try { // 啟動SDK的代碼,下面是簡單封裝SDK後的代碼。 OnscSharp.CreateProducer(); OnscSharp.StartProducer(); } catch (Exception ex) { // 處理異常。 } } protected void Application_End(object sender, EventArgs e) { try { // 關閉SDK的代碼。 OnscSharp.ShutdownProducer(); } catch (Exception ex) { // 處理異常。 } } } }
編寫測試程式,然後進行編譯。
將SDK下的DLL放到和可執行檔同一級目錄下,或者系統目錄下即可運行。
選擇
,然後選中對網站和專案使用IIS Express的64位版。