本文介绍使用TCP协议的.NET SDK方式接入消息队列RocketMQ版的环境准备工作,以便您后续使用TCP协议的.NET SDK收发消息。

使用前,请注意以下几点:
  • 使用消息队列RocketMQ版服务的应用程序需要部署在阿里云ECS上。
  • 代码里涉及到的Topic和Group ID,需要到控制台上创建。Message Tag可以完全由应用自定义。创建步骤,请参见快速入门中的创建资源

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配置说明

  1. 使用Visual Studio 2015创建自己的项目。createproject
  2. 右键单击项目选择添加 > 现存在项,将下载的SDK中的interface目录下的所有文件都添加进去。interface
  3. 右键单击项目选择属性 > 配置管理器。设置活动解决方案配置release;设置活动解决方案平台x64
  4. 编写测试程序,然后进行编译,最后将SDK下的DLL放到和可执行文件同一级目录下,或者系统目录下即可运行。ddl
    说明

    SDK提供了设置好的Demo,直接打开工程进行编译即可。运行的时候将相关的DLL文件拷贝到和可执行文件同级目录下,如下图。

    copyddl

Visual Studio 2015配置ASP.NET使用消息队列RocketMQ版SDK

  1. 使用VS2015创建一个ASP.NET的Web Forms项目。Web Forms
  2. 右键单击项目选择属性 > 配置管理器。设置活动解决方案配置release;设置活动解决方案平台x64x64
  3. 右键单击项目选择添加 > 现存在项,将下载的SDK中的interface目录下的所有文件都添加进去。

    请参考上文中配置普通的.NET项目的步骤2。

  4. 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)
               { 
               // 处理异常。
               }
           }
      }
    }                  
  5. 编写测试程序,然后进行编译。
  6. 将SDK下的DLL放到和可执行文件同一级目录下,或者系统目录下即可运行。ddl
  7. 选择工具 > 选项 > 项目和解决方案 > Web项目,然后选中对网站和项目使用IIS Express的64位版。iisexpressproject&sultion