我需要将我们的服务总线nuget包升级到3.2.2 (假设连处理器主机都需要它),但是我始终将服务总线项目库保持在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的程序,运行2.8.x的lib项目)

发布于 2016-05-25 14:09:44
我想明白了参见链接https://gist.github.com/sitereactor/8953583
如果有人有类似的问题,让我知道,并会张贴我的代码,但它的95%,根据链接。
https://stackoverflow.com/questions/37432494
复制相似问题