public class MessageQueue
{
#region Private Properties
private const string _accessKeyId = "";
private const string _secretAccessKey = "";
private const string _endpoint = "";
private static string _queueName;
private const int _receiveTimes = 1;
private const int _receiveInterval = 2;
private const int batchSize = 6;
#endregion
#region 设置队列名称
public string queueName
{
set
{
_queueName = value;
}
get
{
return _queueName;
}
}
#endregion
#region 判断消息队列是否存在
/// <summary>
/// 判断消息队列是否存在
/// </summary>
/// <returns></returns>
public static bool QueueIsExist()
{
bool flag = false;
try
{
using (IMNS client = new Aliyun.MNS.MNSClient(_accessKeyId, _secretAccessKey, _endpoint))
{
var nativeQueue = client.GetNativeQueue(_queueName);
var getQueueAttributesResponse = nativeQueue.GetAttributes();
flag = true;
}
}
catch (Exception ex) { Console.WriteLine(ex.ToString()); }
return flag;
}
#endregion
#region 创建消息队列
/// <summary>
/// 创建消息队列
/// </summary>
/// <returns></returns>
public static string CreateQueue()
{
/*
DelaySeconds 发送到该 Queue 的所有消息默认将以DelaySeconds参数指定的秒数延后可被消费,单位为秒。 0-604800秒(7天)范围内某个整数值,默认值为0
MaximumMessageSize 发送到该Queue的消息体的最大长度,单位为byte。 1024(1KB)-65536(64KB)范围内的某个整数值,默认值为65536(64KB)。
MessageRetentionPeriod 消息在该 Queue 中最长的存活时间,从发送到该队列开始经过此参数指定的时间后,不论消息是否被取出过都将被删除,单位为秒。 60 (1分钟)-1296000 (15 天)范围内某个整数值,默认值345600 (4 天)
VisibilityTimeout 消息从该 Queue 中取出后从Active状态变成Inactive状态后的持续时间,单位为秒。 1-43200(12小时)范围内的某个值整数值,默认为30(秒)
PollingWaitSeconds 当 Queue 中没有消息时,针对该 Queue 的 ReceiveMessage 请求最长的等待时间,单位为秒。 0-30秒范围内的某个整数值,默认为0(秒)
LoggingEnabled 是否开启日志管理功能,True表示启用,False表示停用 True/False,默认为False
*/
string queueName = string.Empty;
var createQueueRequest = new CreateQueueRequest
{
QueueName = _queueName,
Attributes =
{
DelaySeconds = 0,
MaximumMessageSize = 65536,
MessageRetentionPeriod = 345600,
VisibilityTimeout = 3600,
PollingWaitSeconds = 3
}
};
try
{
using (IMNS client = new Aliyun.MNS.MNSClient(_accessKeyId, _secretAccessKey, _endpoint))
{
var queue = client.CreateQueue(createQueueRequest);
queueName = queue.QueueName;
}
}
catch (Exception ex) { Console.WriteLine(ex.ToString()); }
Thread.Sleep(2000);
return queueName;
}
#endregion
#region 删除消息队列
/// <summary>
/// 删除消息队列
/// </summary>
/// <returns></returns>
public static bool DeleteQueue()
{
bool flag = false;
var deleteQueueRequest = new DeleteQueueRequest(_queueName);
deleteQueueRequest.AddHeader("Accept", "IE6"); //Add extra request headers
//deleteQueueRequest.AddParameter("param1", "value1"); //InvalidQueryString
try
{
using (IMNS client = new Aliyun.MNS.MNSClient(_accessKeyId, _secretAccessKey, _endpoint))
{
var deleteQueueResponse = client.DeleteQueue(deleteQueueRequest);
flag = true;
}
}
catch (Exception ex) { Console.WriteLine(ex.ToString()); }
return flag;
}
#endregion
#region 发送消息(单条或多条)
/// <summary>
/// 发送消息(单条或多条)
/// </summary>
/// <param name="models">SendMessageRequest集合</param>
/// <returns></returns>
public static bool BathSendMessage(List<SendMessageRequest> models)
{
消息队列、OSS常用操作封装
最新推荐文章于 2024-07-26 22:05:49 发布
本文档提供了一组封装了阿里云OSS(对象存储服务)和MNS(消息队列服务)常用操作的C#类库。包括创建、删除消息队列,发送、接收和删除消息,以及OSS对象的上传、下载和删除等操作。示例代码详细展示了如何使用这些API进行实际操作。
摘要由CSDN通过智能技术生成