C# 消息队列-Microsoft Azure service bus 服务总线
先决条件
- Visual Studio 2015或更高版本。本教程中的示例使用Visual Studio 2015。
- Azure订阅。
注意
要完成本教程,您需要一个Azure帐户。您可以激活MSDN订阅者优惠或注册一个免费帐户。
1.使用Azure门户创建一个命名空间
如果已经创建了Service Bus命名空间,请跳转到使用Azure门户部分创建队列。+
创建服务命名空间
要在Azure中开始使用服务总线队列,必须首先创建一个命名空间。命名空间提供了一个用于在应用程序中寻址服务总线资源的作用域容器。
创建命名空间:
- 登录到Azure门户。
- 在门户的左侧导航窗格中,单击新建,然后单击企业集成,然后单击服务总线。
- 在“ 创建命名空间 ”对话框中,输入命名空间名称。系统立即检查该名称是否可用。
- 确保命名空间名称可用后,选择定价层(基本,标准或高级)。
- 在预订字段中,选择要在其中创建命名空间的Azure订阅。
- 在“ 资源组”字段中,选择命名空间将存在的现有资源组,或创建一个新的资源组。
在位置中,选择应托管您的命名空间的国家或地区。

- 单击创建。系统现在创建您的命名空间并启用它。您可能需要等待几分钟,因为系统为您的帐户提供资源。
获取管理凭据
- 在命名空间列表中,单击新创建的命名空间名称。
- 在命名空间刀片中,单击共享访问策略。
在共享访问策略刀片中,单击RootManageSharedAccessKey。

在策略:RootManageSharedAccessKey刀片中,单击连接字符串主键旁边的复制按钮,将连接字符串复制到剪贴板以备将来使用。将此值粘贴到记事本或某个其他临时位置。

重复上一步骤,将主键的值复制并粘贴到临时位置以备将来使用。
2.使用Azure门户创建队列
如果已经创建了服务总线队列,请跳转到向队列发送消息部分。
请确保你已经创建了一个服务总线命名空间,如图所示这里。
- 登录到Azure门户。
- 在门户的左侧导航窗格中,单击服务总线(如果未看到服务总线,请单击更多服务)。
选择要创建队列的命名空间。在这种情况下,它是nstest1。

在Service Bus命名空间刀片中,选择队列,然后单击添加队列。

输入队列名称,并保留其他值及其默认值。

- 在刀片的底部,单击创建。
3.将消息发送到队列
要将消息发送到队列,我们将使用Visual Studio编写一个C#控制台应用程序。
创建控制台应用程序
- 启动Visual Studio并创建一个新的控制台应用程序。
添加服务总线NuGet包
- 右键单击新创建的项目,然后选择管理NuGet包。
单击浏览选项卡,然后搜索“Microsoft Azure服务总线”并选择Microsoft Azure服务总线项目。单击安装完成安装,然后关闭此对话框。

编写一些代码以将消息发送到队列
将以下using语句添加到Program.cs文件的顶部。
using Microsoft.ServiceBus.Messaging;
下面的代码添加到
Main方法,设置的connectionString变量,创建命名空间时所获得的,并设置连接字符串QUEUENAME作为创建队列时使用的队列名称。var connectionString = "<Your connection string>";
var queueName = "<Your queue name>"; var client = QueueClient.CreateFromConnectionString(connectionString, queueName);
var message = new BrokeredMessage("This is a test message!");
client.Send(message);这里是你的Program.cs应该是什么样子。
using System;
using Microsoft.ServiceBus.Messaging; namespace GettingStartedWithQueues
{
class Program
{
static void Main(string[] args)
{
var connectionString = "<Your connection string>";
var queueName = "<Your queue name>"; var client = QueueClient.CreateFromConnectionString(connectionString, queueName);
var message = new BrokeredMessage("This is a test message!"); client.Send(message);
}
}
}运行程序,并检查Azure门户。在命名空间概要刀片中单击队列的名称。请注意,活动消息计数值现在应为1。

4.从队列接收消息
- 创建一个新的控制台应用程序并添加对Service Bus NuGet包的引用,类似于上一个发送应用程序。
将以下语句
using添加到Program.cs文件的顶部。using Microsoft.ServiceBus.Messaging;
下面的代码添加到
Main方法,设置的connectionString变量,创建命名空间时所获得的,并设置连接字符串QUEUENAME如您在创建队列时使用的队列名称。var connectionString = "";
var queueName = "samplequeue"; var client = QueueClient.CreateFromConnectionString(connectionString, queueName); client.OnMessage(message =>
{
Console.WriteLine(String.Format("Message body: {0}", message.GetBody<String>()));
Console.WriteLine(String.Format("Message id: {0}", message.MessageId));
}); Console.ReadLine();这里是你的Program.cs文件应该是什么样子:
using System;
using Microsoft.ServiceBus.Messaging; namespace GettingStartedWithQueues
{
class Program
{
static void Main(string[] args)
{
var connectionString = "";
var queueName = "samplequeue"; var client = QueueClient.CreateFromConnectionString(connectionString, queueName); client.OnMessage(message =>
{
Console.WriteLine(String.Format("Message body: {0}", message.GetBody<String>()));
Console.WriteLine(String.Format("Message id: {0}", message.MessageId));
}); Console.ReadLine();
}
}
}运行程序,并检查门户。请注意,队列长度值现在应为0。

恭喜!您现在已创建一个队列,发送了一条消息,并收到了一条消息。
参考资料:https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-get-started-with-queues
C# 消息队列-Microsoft Azure service bus 服务总线的更多相关文章
- 【Azure 服务总线】详解Azure Service Bus SDK中接收消息时设置的maxConcurrentCalls,prefetchCount参数
(Azure Service Bus服务总线的两大类消息处理方式: 队列Queue和主题Topic) 问题描述 使用Service Bus作为企业消息代理,当有大量的数据堆积再Queue或Topic中 ...
- 微软云消息队列 Azure service bus queue
前言 第一次使用消息队列,遇到了一些问题:同一个消息有多次出列.是一个消息只入列一次,还是多次?还是因为出列问题,出列了多次? Microsoft Azure service bus queue Az ...
- Azure Service Bus(一)入门简介
一,引言 今天开始学习新的内容 Azure Service Bus(服务总线),其实也叫 "云消息服务",和 RabbitMQ,KafKa的一样都是作为消息通信服务,但是它们直接还 ...
- 【服务总线 Azure Service Bus】Service Bus在使用预提取(prefetching)后出现Microsoft.Azure.ServiceBus.MessageLockLostException异常问题
问题描述 Service Bus接收端的日志中出现大量的MessageLockLostException异常.完整的错误消息为: Microsoft.Azure.ServiceBus.MessageL ...
- 【服务总线 Azure Service Bus】ServiceBus 队列中死信(DLQ - Dead Letter Queue)问题
Azure Service Bus 死信队列产生的原因 服务总线中有几个活动会导致从消息引擎本身将消息推送到 DLQ. 如 超过 MaxDeliveryCount 超过 TimeToLive 处理订阅 ...
- 【Azure Service Bus】 Service Bus如何确保消息发送成功,发送端是否有Ack机制
问题描述 Service Bus如何确保消息发送成功,发送端是否有Ack机制(是否有回调API告诉发送端,服务端已经收到消息)?根据对.NET发送Service Bus消息代码的分析,发送方法queu ...
- 【Azure 服务总线】Azure Service Bus中私信(DLQ - Dead Letter Queue)如何快速清理
在博文ServiceBus 队列中死信(DLQ - Dead Letter Queue)问题一文中,介绍了服务总线产生私信的原因及可以通过代码的方式来清楚私信队列中的消息,避免长期占用空间(因为私信中 ...
- Windows Azure Service Bus (2) 队列(Queue)入门
<Windows Azure Platform 系列文章目录> Service Bus 队列(Queue) Service Bus的Queue非常适合分布式应用.当使用Service Bu ...
- Windows Azure Service Bus (3) 队列(Queue) 使用VS2013开发Service Bus Queue
<Windows Azure Platform 系列文章目录> 在之前的Azure Service Bus中,我们已经介绍了Service Bus 队列(Queue)的基本概念. 在本章中 ...
随机推荐
- Live2D插件--漂浮的二次元小姐姐
这个插件找了很久,都没找到,今天偶然翻到一个小哥的博客发现了这个,果断偷走. 教程转自简书:https://www.jianshu.com/p/1cedcf183633 还有这些,你可能有用 修改位置 ...
- Egret 生成 自带EUI 的微信小游戏 踩坑!
1. 首先,再次被网上一大堆屎一样的资料搞得浪费了我一天时间.各种坑. 2. 本文先讲一种正确的方式,然后再列举坑. 去www.egret.com下载最新的引擎,我的最新版本是5.2.2. 然后就会被 ...
- JAVA小白开发环境配置(编译器为Idea)
JDK配置 1.首先到官网下载最新版JDK:Oracle官网下载 Accept License Agreement–>下载适合自己pc版本的jdk(此处以64位windows为例.x86是32位 ...
- 【DFS】困难的串
题目: 问题描述:如果一个字符串包含两个相邻的重复子串,则称它为容易的串,其他串称为困难的串.如:BB,ABCDACABCAB,ABCDABCD都是容易的,A,AB,ABA,D,DC,ABDAB,CB ...
- 感恩节活动中奖名单 i春秋喊你领礼物啦!
上周我们组织的感恩节活动,得到了小伙伴们积极踊跃的回复,看到你们这么真诚的留言,我们也是满满的感动,在众多留言中,我们选出了八位幸运用户,让我们一起恭喜获奖的小伙伴们吧. 恭喜以上8位幸运的小伙伴,我 ...
- [Swift]LeetCode201. 数字范围按位与 | Bitwise AND of Numbers Range
Given a range [m, n] where 0 <= m <= n <= 2147483647, return the bitwise AND of all numbers ...
- [Swift]LeetCode302. 包含黑色像素的最小矩形 $ Smallest Rectangle Enclosing Black Pixels
An image is represented by a binary matrix with 0 as a white pixel and 1 as a black pixel. The black ...
- [Swift]LeetCode446. 等差数列划分 II - 子序列 | Arithmetic Slices II - Subsequence
A sequence of numbers is called arithmetic if it consists of at least three elements and if the diff ...
- [Swift]LeetCode949. 给定数字能组成的最大时间 | Largest Time for Given Digits
Given an array of 4 digits, return the largest 24 hour time that can be made. The smallest 24 hour t ...
- 解决SpringMVC中文乱码问题--这是前端传参数到服务器
SpringMvc参数传递中乱码问题 问题描述: 当传递中文参数到controller类时,无乱是get方式还是post方式都出现乱码 解决: 1.保证所有的页面编码都是utf-8,包括jsp页面 ...