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)导入相应的包

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# Azure 消息队列ServiceBus (服务总线队列)的更多相关文章

  1. C# 消息队列-Microsoft Azure service bus 服务总线

    先决条件 Visual Studio 2015或更高版本.本教程中的示例使用Visual Studio 2015. Azure订阅. 注意 要完成本教程,您需要一个Azure帐户.您可以激活MSDN订 ...

  2. 【服务总线 Azure Service Bus】ServiceBus 队列中死信(DLQ - Dead Letter Queue)问题

    Azure Service Bus 死信队列产生的原因 服务总线中有几个活动会导致从消息引擎本身将消息推送到 DLQ. 如 超过 MaxDeliveryCount 超过 TimeToLive 处理订阅 ...

  3. 【Azure 服务总线】详解Azure Service Bus SDK中接收消息时设置的maxConcurrentCalls,prefetchCount参数

    (Azure Service Bus服务总线的两大类消息处理方式: 队列Queue和主题Topic) 问题描述 使用Service Bus作为企业消息代理,当有大量的数据堆积再Queue或Topic中 ...

  4. 基于ASP.NET Core 5.0使用RabbitMQ消息队列实现事件总线(EventBus)

    文章阅读请前先参考看一下 https://www.cnblogs.com/hudean/p/13858285.html 安装RabbitMQ消息队列软件与了解C#中如何使用RabbitMQ 和 htt ...

  5. 解决Azure 消息队列ServiceBus提示证书不信任无权限的问题

    笔者在C# 消息队列-Microsoft Azure service bus 服务总线中使用Azure消息队列,最近偶尔会遇到请求数据不入队列的问题,查找日志,问题如下: 异常:X. certific ...

  6. 【服务总线 Azure Service Bus】Service Bus在使用预提取(prefetching)后出现Microsoft.Azure.ServiceBus.MessageLockLostException异常问题

    问题描述 Service Bus接收端的日志中出现大量的MessageLockLostException异常.完整的错误消息为: Microsoft.Azure.ServiceBus.MessageL ...

  7. openstack (共享服务) 消息队列rabbitmq服务

    云计算openstack共享组件——消息队列rabbitmq(3)   一.MQ 全称为 Message Queue, 消息队列( MQ ) 是一种应用程序对应用程序的通信方法.应用程序通过读写出入队 ...

  8. 【Azure 服务总线】Azure Service Bus中私信(DLQ - Dead Letter Queue)如何快速清理

    在博文ServiceBus 队列中死信(DLQ - Dead Letter Queue)问题一文中,介绍了服务总线产生私信的原因及可以通过代码的方式来清楚私信队列中的消息,避免长期占用空间(因为私信中 ...

  9. RabbitMQ高级之消息限流与延时队列

    人生终将是场单人旅途,孤独之前是迷茫,孤独过后是成长. 楔子 本篇是消息队列RabbitMQ的第五弹. 上篇本来打算讲述RabbitMQ的一些高级用法: 如何保证消息的可靠性? 消息队列如何进行限流? ...

随机推荐

  1. Android Notification 详解——基本操作

    Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...

  2. android_m2repository_rxx.zip下载地址以及MD5

    地址 MD5 https://dl-ssl.google.com/android/repository/android_m2repository_r08.zip 8C8EC4C731B7F55E646 ...

  3. ORACLE分区表梳理系列(二)- 分区表日常维护及注意事项(红字需要留意)

    版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...

  4. SpringMVC_简单小结

    SpringMVC是一个简单的.优秀的框架.应了那句话简单就是美,而且他强大不失灵活,性能也很优秀. 机制:spring mvc的入口是servlet,而struts2是filter(这里要指出,fi ...

  5. web前端开发分享-目录

    1. web前端开发分享-css,js入门篇 2. web前端开发分享-css,js进阶篇 3. web前端开发分享-css,js提高篇 4. web前端开发分享-css,js工具篇 5. web前端 ...

  6. Linux.NET实战手记—自己动手改泥鳅(上)

    各位读者大家好,不知各位读者有否阅读在下的前一个系列<Linux.NET 学习手记>,在前一个系列中,我们从Linux中Mono的编译安装开始,到Jexus服务器的介绍,以及如何在Linu ...

  7. 分布式存储 CentOS6.5虚拟机环境搭建FastDFS-5.0.5集群

    前言:       由于公司项目需要,最近开始学习一下分布式存储相关知识,确定使用FastDFS这个开源工具.利用周末的时间在虚拟机上搭建了分布式存储系统,在搭建过程中,发现网上的资料说的并不是很全, ...

  8. SAE+WordPress快速搭建个人博客

    前些天一时冲动,买了个域名,我想总不能放着不用吧,干脆就搭建了一个个人博客.下面我把搭建的过程分享给大家.注意,此文并不是攻略,只是为了记录下这个从无到有的过程,当然,假如解决了你的疑惑,那当然是极好 ...

  9. Kinect开发文章目录

    整理了一下去年为止到现在写的和翻译的Kinect的相关文章,方便大家查看.另外,最近京东上微软在搞活动, 微软 Kinect for Windows 京东十周年专供礼包 ,如果您想从事Kinect开发 ...

  10. Redux初见

    说到redux可能我们都先知道了react,但我发现,关于react相关的学习资料很多,也有各种各样的种类,但是关于redux简单易懂的资料却比较少. 这里记录一下自己的学习理解,希望可以简洁易懂,入 ...