Azure 服务总线 3.2.2 BeginReceive()
Azure Service Bus 3.2.2 BeginReceive()
我需要将我们的服务总线 nuget 包升级到 3.2.2(认为 evenprocessor 主机需要它)但我一直将我们的服务总线项目库保持在 2.8.2。这主要是因为 BeginReceive() 和 EndReceive() 看起来已被删除。有什么原因或者无论如何我可以轻松转换这个
public void StartReceiving(RecieverCallback callback, TimeSpan waittime, object state = null)
{
this._recieverCallback = callback;
_queueClient = this.MessagingFactory.CreateQueueClient(QueueName, ReceiveMode);
// make initial async call
_asyncresult = _queueClient.BeginReceive(waittime, ReceiveDone, _queueClient);
}
public void ReceiveDone(IAsyncResult result)
{
if (result != null)
{
try
{
var tmpClient = result.AsyncState as QueueClient;
var brokeredMessage = tmpClient.EndReceive(result);
if (brokeredMessage != null)
{
if (ReceiveMode == ReceiveMode.PeekLock)
{
brokeredMessage.Complete();
}
var tmpMessage = brokeredMessage.GetBody<T>();
ProcessMessageProperties(tmpMessage, brokeredMessage);
_recieverCallback(tmpMessage);
}
}
catch (Exception ex)
{
_logger.Fatal("ReceiveDone: {0}", ex.Message);
Console.WriteLine(ex.Message);
}
}
// do recieve for next message
_asyncresult = _queueClient.BeginReceive(ReceiveDone, _queueClient);
}
显示错误的图像
下图显示了如果我将 servicebus 升级到 3.2.2 会发生什么,我相信这会解决原始错误(程序 运行 3.2.2,lib 项目 运行 2.8.x)
我想通了 link
https://gist.github.com/sitereactor/8953583
如果有人有类似的问题,请告诉我并 post 我的代码,但它与 link.
的 95% 相同
我需要将我们的服务总线 nuget 包升级到 3.2.2(认为 evenprocessor 主机需要它)但我一直将我们的服务总线项目库保持在 2.8.2。这主要是因为 BeginReceive() 和 EndReceive() 看起来已被删除。有什么原因或者无论如何我可以轻松转换这个
public void StartReceiving(RecieverCallback callback, TimeSpan waittime, object state = null)
{
this._recieverCallback = callback;
_queueClient = this.MessagingFactory.CreateQueueClient(QueueName, ReceiveMode);
// make initial async call
_asyncresult = _queueClient.BeginReceive(waittime, ReceiveDone, _queueClient);
}
public void ReceiveDone(IAsyncResult result)
{
if (result != null)
{
try
{
var tmpClient = result.AsyncState as QueueClient;
var brokeredMessage = tmpClient.EndReceive(result);
if (brokeredMessage != null)
{
if (ReceiveMode == ReceiveMode.PeekLock)
{
brokeredMessage.Complete();
}
var tmpMessage = brokeredMessage.GetBody<T>();
ProcessMessageProperties(tmpMessage, brokeredMessage);
_recieverCallback(tmpMessage);
}
}
catch (Exception ex)
{
_logger.Fatal("ReceiveDone: {0}", ex.Message);
Console.WriteLine(ex.Message);
}
}
// do recieve for next message
_asyncresult = _queueClient.BeginReceive(ReceiveDone, _queueClient);
}
显示错误的图像
下图显示了如果我将 servicebus 升级到 3.2.2 会发生什么,我相信这会解决原始错误(程序 运行 3.2.2,lib 项目 运行 2.8.x)
我想通了 link https://gist.github.com/sitereactor/8953583
如果有人有类似的问题,请告诉我并 post 我的代码,但它与 link.
的 95% 相同