C# 服务总线队列如何映射任务<;BrokeredMessage>;任务<;MyClass>;
我正在为服务总线队列使用适配器。因此,我不应该使用任何队列类作为返回类型。但是我对C# 服务总线队列如何映射任务<;BrokeredMessage>;任务<;MyClass>;,c#,mapping,task,azure-servicebus-queues,brokeredmessage,C#,Mapping,Task,Azure Servicebus Queues,Brokeredmessage,我正在为服务总线队列使用适配器。因此,我不应该使用任何队列类作为返回类型。但是我对ReceiveAsync()方法很感兴趣。如何将任务映射到任务 下面是BrokeredMessage public class QueueMessage : IQueueMessage { private BrokeredMessage _message; public T Body<T>() { T result = de
ReceiveAsync()
方法很感兴趣。如何将任务映射到任务
下面是BrokeredMessage
public class QueueMessage : IQueueMessage
{
private BrokeredMessage _message;
public T Body<T>()
{
T result = default(T);
if (_message != null)
result = _message.GetBody<T>();
return result;
}
public BrokeredMessage Message { set { _message = value; } }
public string Label
{
get
{
var result = "";
if (_message != null)
result = _message.Label;
return result;
}
}
public void MoveToDeadLetter()
{
if (_message != null)
_message.DeadLetter();
}
public void Complete()
{
if (_message != null)
_message.Complete();
}
public async void CompleteAsync()
{
if (_message != null)
await _message.CompleteAsync();
}
public async void AbandonAsync()
{
if (_message != null)
await _message.AbandonAsync();
}
public void Abandon()
{
if (_message != null)
_message.Abandon();
}
public string MessageId
{
get
{
return _message == null ? null : _message.MessageId;
}
set { if (_message != null) _message.MessageId = value; }
}
public string CorrelationId
{
get
{
return _message == null ? null : _message.CorrelationId;
}
set { if (_message != null) _message.CorrelationId = value; }
}
public int DeliveryCount { get { return _message == null ? -1 : _message.DeliveryCount; } }
}
我将在QueueClient.ReceiveAsync()上尝试继续。看
public Task ReceiveAsync(TimeSpan-serverWaitTime)
{
任务=排队客户端
.ReceiveAsync(服务器等待时间)
.ContinueWith(bm=>newQueueMessage{Message=bm});
返回任务;
}
谢谢你,理查德。我刚刚改进了你的答案,效果很好
public async Task<IQueueMessage> ReceiveAsycn(TimeSpan serverWaitTime)
{
var task = QueueClient
.ReceiveAsync(serverWaitTime)
.ContinueWith(bm => bm.Result==null ? null : new QueueMessage { Message=bm.Result});
return await task;
}
public async Task ReceiveAsycn(TimeSpan-serverWaitTime)
{
var task=QueueClient
.ReceiveAsync(服务器等待时间)
.ContinueWith(bm=>bm.Result==null?null:newQueueMessage{Message=bm.Result});
返回等待任务;
}
var task1 = _queueAdapter.ReceiveAsync(new TimeSpan(200)).ContinueWith(ReadMessageAsync);
public Task<IQueueMessage> ReceiveAsync(TimeSpan serverWaitTime)
{
Task<QueueMessage> task = QueueClient
.ReceiveAsync(serverWaitTime)
.ContinueWith(bm => new QueueMessage{Message = bm});
return task;
}
public async Task<IQueueMessage> ReceiveAsycn(TimeSpan serverWaitTime)
{
var task = QueueClient
.ReceiveAsync(serverWaitTime)
.ContinueWith(bm => bm.Result==null ? null : new QueueMessage { Message=bm.Result});
return await task;
}