JavaShuo
欄目
標籤
只需三步:使用C# 操做 Azure 隊列
時間 2019-11-19
標籤
只需
三步
使用
c#
azure
隊列
欄目
C#
简体版
原文
原文鏈接
Step 1 :
安裝windows Azure package
Step 2 :
配置文件增長:
html
[html]
view plain
copy
print
?
<
appSettings
>
<
add
key=
"StorageConnectionString"
value=
"your connection string"
/>
</
appSettings
>
Step 3 :
using this Azure class
windows
[csharp]
view plain
copy
print
?
namespace Axe.AzureStorage
{
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Queue;
public
class WinAzureStorageAsync
{
private
readonly CloudQueue queue;
private
readonly
int timeoutSecond;
private CloudQueueClient queueClient;
public CloudQueueClient QueueClient
{
get
{
if (
this.queueClient !=
null)
return
this.queueClient;
var storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting(
"StorageConnectionString"));
this.queueClient = storageAccount.CreateCloudQueueClient();
return
this.queueClient;
}
}
////since each time fetch message is not a block operation
////so need to set a timeout & keep fetching , default is 3 seconds
private
const
int SleepInterval = 100;
public WinAzureStorageAsync(
string queueName,
int timeoutSecond = 3)
{
queueName = queueName.ToLower();
this.queue =
this.QueueClient.GetQueueReference(queueName);
if (!
this.QueueClient.GetQueueReference(queueName).Exists())
{
this.queue.CreateIfNotExists();
}
this.timeoutSecond = timeoutSecond;
}
public async Task<CloudQueueMessage> GetMessage()
{
CloudQueueMessage message =
null;
var passed = 0;
while (message ==
null && passed <
this.timeoutSecond * 10 * SleepInterval)
{
message = await
this.queue.GetMessageAsync();
Thread.Sleep(SleepInterval);
passed += SleepInterval;
}
if (message ==
null)
{
throw
new TimeoutException(
"Get Message From Azure Queue Operation has been timeout");
}
await
this.queue.DeleteMessageAsync(message);
return message;
}
public async Task<
string> GetString()
{
var msg = await
this.GetMessage();
return msg.AsString;
}
public async Task<
byte[]> GetBytes()
{
var msg = await
this.GetMessage();
return msg.AsBytes;
}
public T Get<T>() where T :
new()
{
var bytes =
this.GetBytes();
return
this.BytesToT<T>(bytes.Result);
}
public async Task Add(
string message)
{
await
this.queue.AddMessageAsync(
new CloudQueueMessage(message));
}
public async Task Add(
byte[] bytes)
{
await
this.queue.AddMessageAsync(
new CloudQueueMessage(bytes));
}
public
void Add<T>(T obj) where T :
new()
{
var bytes =
this.TToBytes(obj);
this.Add(bytes);
}
/// <summary>
/// Note : this operation make takes around 40 seconds to complete, reference here:
/// http://msdn.microsoft.com/library/azure/dd179387.aspx
/// </summary>
/// <returns></returns>
public async Task DeleteIfExists()
{
await
this.queue.DeleteIfExistsAsync();
}
public async Task<
bool> IsExist(
string queueName)
{
queueName = queueName.ToLower();
return await
this.QueueClient.GetQueueReference(queueName).ExistsAsync();
}
public
void ClearMessage()
{
this.queue.Clear();
}
private T BytesToT<T>(
byte[] bytes)
{
using (var ms =
new MemoryStream())
{
ms.Write(bytes, 0, bytes.Length);
var bf =
new BinaryFormatter();
ms.Position = 0;
var x = bf.Deserialize(ms);
return (T)x;
}
}
private
byte[] TToBytes<T>(T obj)
{
var bf =
new BinaryFormatter();
using (var ms =
new MemoryStream())
{
bf.Serialize(ms, obj);
return ms.ToArray();
}
}
}
}
相關文章
1.
C# Azure 存儲-隊列
2.
FreeRTOS 隊列操做——異步轉同步
3.
C# 異步併發操做,只保留最後一次操做
4.
隊列操做
5.
C# 使用Task執行異步操做
6.
只需三步!慢日誌去無蹤
7.
連續同源異步操做隊列
8.
用Power-BI做BI報表,只需三四個步驟
9.
異步操做(三)
10.
c#操做RabbitMQ使用json格式寫入消息隊列
更多相關文章...
•
C# 隊列(Queue)
-
C#教程
•
ionic 列表操作
-
ionic 教程
•
C# 中 foreach 遍歷的用法
•
Java Agent入門實戰(三)-JVM Attach原理與使用
相關標籤/搜索
異步操做
只需
步操
azure
做操
操做
附操做步驟
三隻
需用
只用
C#
C#教程
Spring教程
Hibernate教程
C#
應用
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
python的安裝和Hello,World編寫
2.
重磅解讀:K8s Cluster Autoscaler模塊及對應華爲雲插件Deep Dive
3.
鴻蒙學習筆記2(永不斷更)
4.
static關鍵字 和構造代碼塊
5.
JVM筆記
6.
無法啓動 C/C++ 語言服務器。IntelliSense 功能將被禁用。錯誤: Missing binary at c:\Users\MSI-NB\.vscode\extensions\ms-vsc
7.
【Hive】Hive返回碼狀態含義
8.
Java樹形結構遞歸(以時間換空間)和非遞歸(以空間換時間)
9.
數據預處理---缺失值
10.
都要2021年了,現代C++有什麼值得我們學習的?
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
1.
C# Azure 存儲-隊列
2.
FreeRTOS 隊列操做——異步轉同步
3.
C# 異步併發操做,只保留最後一次操做
4.
隊列操做
5.
C# 使用Task執行異步操做
6.
只需三步!慢日誌去無蹤
7.
連續同源異步操做隊列
8.
用Power-BI做BI報表,只需三四個步驟
9.
異步操做(三)
10.
c#操做RabbitMQ使用json格式寫入消息隊列
>>更多相關文章<<