C# Azure 消息队列ServiceBus (服务总线队列)
2016-11-24 20:54
447 查看
1. 前言
在阅读本文之前,可以查看微软官方的说明。
https://www.azure.cn/documentation/articles/service-bus-create-queues/
2. 介绍
1) service bus的队列,若当前消息被成功处理后,则这个消息会从队列中消失。
2) service bus是先进先出的队列,当取队列时,一直停留做等待,直到有消息进入。
3) Windows Azure Service Bus 提供安全且广泛可用的托管基础结构,以实现广泛通信、大范围事件分布、命名和服务发布。Service Bus 为 Windows Communication Foundation (WCF) 和其他服务终结点(包括 REST 终结点)提供连接选项,没有这些连接选项将很难或不可能访问这些终结点。可以将终结点置于网络地址转换 (NAT) 边界的后面并/或绑定到经常更改的、动态分配的 IP 地址。
4)Service Bus 提供“中继”和“中转”消息传递功能。在中继消息传递模式下,中继服务支持直接单向消息传递、请求/响应消息传递和对等消息传递。中转消息传递提供了持久异步消息传递组件(如队列、主题和订阅),具有支持发布-订阅和临时分离的功能:发送者和接收者不必同时处于联机状态;该消息传递基础结构能够可靠地存储消息,直到接收方准备好接收消息。
3. 开始创建
1)登录到Azure https://manage.windowsazure.cn/
2)打开服务总线
3)新建消息队列
在左下角—>新建 —> 服务总线—>队列—>自定义创建
我们输入队列名称与命名空间名称如下:队列名称:myqueue;命名空间名称:testnamespace
点击下一步,如下。用默认的值,你也可以用自己自定义的值
这时候,我们等待创建,命名空间与队列都创建成功,如下:
4)设置队列
我们依次进入 命名空间—>队列—>myqueue—>配置,填写名称与权限。用来配置队列连接属性与连接字符串
我们填写名称alun,有管理、发送、侦听的权限。
5)查看连接信息
打开命名空间testnamespace—>队列,选中myqueue,然后查看连接信息
可以看到连接字符串
到此,创建队列结束
4. 代码开始
1)首先,创建一个项目,这里我们创建一个控制台项目 ConsoleApplicationServiceBus
2)导入相应的包
3)连接servicebus
如果代码中不对 ConnectivityMode 做预先设置,service bus 客户端( web 应用)默认使用了 AutoDetect 模式 连接 service bus 服务。 AutoDetect 会优先使用 TCP 连接模式。由于 TCP 连接模式也是加密的,所以客户端需要首先验证 service bus 服务器证书 CN = servicebus.chinacloudapi.cn 的有效性,证书链信息在 SSL 协议的 server hello 消息中返回。
如果证书链中的某些中间证书没有安装在 web 应用实例上,web 应用需要发起额外的请求到 CA 服务器上下载中间证书并安装。
取得消息
添加消息
下面是我们自定义的 MessageData类
在阅读本文之前,可以查看微软官方的说明。
https://www.azure.cn/documentation/articles/service-bus-create-queues/
2. 介绍
1) service bus的队列,若当前消息被成功处理后,则这个消息会从队列中消失。
2) service bus是先进先出的队列,当取队列时,一直停留做等待,直到有消息进入。
3) Windows Azure Service Bus 提供安全且广泛可用的托管基础结构,以实现广泛通信、大范围事件分布、命名和服务发布。Service Bus 为 Windows Communication Foundation (WCF) 和其他服务终结点(包括 REST 终结点)提供连接选项,没有这些连接选项将很难或不可能访问这些终结点。可以将终结点置于网络地址转换 (NAT) 边界的后面并/或绑定到经常更改的、动态分配的 IP 地址。
4)Service Bus 提供“中继”和“中转”消息传递功能。在中继消息传递模式下,中继服务支持直接单向消息传递、请求/响应消息传递和对等消息传递。中转消息传递提供了持久异步消息传递组件(如队列、主题和订阅),具有支持发布-订阅和临时分离的功能:发送者和接收者不必同时处于联机状态;该消息传递基础结构能够可靠地存储消息,直到接收方准备好接收消息。
3. 开始创建
1)登录到Azure https://manage.windowsazure.cn/
2)打开服务总线
3)新建消息队列
在左下角—>新建 —> 服务总线—>队列—>自定义创建
我们输入队列名称与命名空间名称如下:队列名称:myqueue;命名空间名称:testnamespace
点击下一步,如下。用默认的值,你也可以用自己自定义的值
这时候,我们等待创建,命名空间与队列都创建成功,如下:
4)设置队列
我们依次进入 命名空间—>队列—>myqueue—>配置,填写名称与权限。用来配置队列连接属性与连接字符串
我们填写名称alun,有管理、发送、侦听的权限。
5)查看连接信息
打开命名空间testnamespace—>队列,选中myqueue,然后查看连接信息
可以看到连接字符串
到此,创建队列结束
4. 代码开始
1)首先,创建一个项目,这里我们创建一个控制台项目 ConsoleApplicationServiceBus
2)导入相应的包
Install-Package WindowsAzure.ServiceBus
3)连接servicebus
如果代码中不对 ConnectivityMode 做预先设置,service bus 客户端( web 应用)默认使用了 AutoDetect 模式 连接 service bus 服务。 AutoDetect 会优先使用 TCP 连接模式。由于 TCP 连接模式也是加密的,所以客户端需要首先验证 service bus 服务器证书 CN = servicebus.chinacloudapi.cn 的有效性,证书链信息在 SSL 协议的 server hello 消息中返回。
如果证书链中的某些中间证书没有安装在 web 应用实例上,web 应用需要发起额外的请求到 CA 服务器上下载中间证书并安装。
//最好设置连接模式为Https,默认是Tcp。如果是Tcp的话,放到云端WEB应用上会报错 ServiceBusEnvironment.SystemConnectivity.Mode = ConnectivityMode.Https; //开始连接 QueueClient Client = QueueClient.CreateFromConnectionString(connStr, queueName);
取得消息
public MessageData GetMessage() { var vMsg = Client.Receive(); if (vMsg == null) { return null; } messageData = vMsg.GetBody<MessageData>(); vMsg.Complete(); return messageData; }
添加消息
public void AddMessage(MessageData msg) { var vmsg = new BrokeredMessage(msg); Client.Send(vmsg); } }
下面是我们自定义的 MessageData类
[DataContract] public class MessageData { [DataMember] public string Content { get; set; } [DataMember] public string id { get; set; } }
相关文章推荐
- C# 消息队列-Microsoft Azure service bus 服务总线
- C#编写Windows服务程序 (服务端),client使用 消息队列 实现淘宝 订单全链路效果
- C#中使用Windows消息队列服务(MSMQ)简单示例
- C#中使用Windows消息队列服务(MSMQ)简单示例
- C#中使用消息队列服务
- C#编写Windows服务程序 (服务端),客户端使用 消息队列 实现淘宝 订单全链路效果
- Azure Messaging-ServiceBus Messaging消息队列技术系列8-服务总线配额
- C#消息队列-1
- C#操作消息队列
- 应用框架的设计与实现——.NET平台(9 消息队列服务代码分析)
- C#:消息队列应用程序
- 使用微软消息队列实现C#进程间通信
- C#之消息队列的简要说明
- 消息队列服务
- Azure Services Bus(服务总线)中的工作流(workflow)
- C#操作消息队列
- 消息队列服务
- 使用微软消息队列实现C#进程间通信
- C#操作消息队列
- 如何应用.NET中的消息队列服务