获取天蓝色的死亡信息并保存到宇宙数据库中

获取天蓝色的死亡信息并保存到宇宙数据库中

问题描述:

在一个项目中,我的要求是获得天蓝色的死亡信件数。如果计数大于0,那么我必须得到每个死信的详细信息,如死信的描述或原因,然后保存到cosmos数据库中。 要获得一纸空文计数我使用代码:获取天蓝色的死亡信息并保存到宇宙数据库中

NamespaceManager namespaceManager=Microsoft.ServiceBus.NamespaceManager.CreateFromConnectionString(sbConnectionString);  
var abc = namespaceManager.GetQueue("").MessageCountDetails;   
var deadLetterCount = messageDetails.DeadLetterMessageCount;  

,并保存到宇宙数据库,代码为:

DocumentDBModel objItem = new DocumentDBModel();  
       objItem.DeadLetterReason = "TestReason";  
       objItem.DeadLetterDescription = "TestDescription"; 
       objItem.DeadLetterDate = DateTime.Now;  
       objItem.Body = "TestBody";  
       DbSettings objSettings = new DbSettings();  
       objSettings.Uri = "";  
       objSettings.Key = "";  
       objSettings.DatabaseId = "TestDB";  
       objSettings.Collection = "TestCollection";   
       DocumentDBRepository<DocumentDBModel> abc = new 
     DocumentDBRepository<DocumentDBModel>(objSettings);  
       abc.CreateAsync(objItem).Wait();  

但是当我运行上面的代码,我本着让例外:

var abc = namespaceManager.GetQueue("").MessageCountDetails;  


<b> Method not found: 'Void System.Runtime.Serialization.DataContractSerializer..ctor(System.Type, System.Collections.Generic.IEnumerable`1<System.Type>, Int32, Boolean, Boolean, System.Runtime.Serialization.IDataContractSurrogate)'. 
    at Microsoft.ServiceBus.Messaging.MessagingDescriptionSerializer`1.CreateSerializer[T]() 
    at Microsoft.ServiceBus.Messaging.MessagingDescriptionSerializer`1..ctor() 
    at Microsoft.ServiceBus.Messaging.ServiceBusResourceOperations.GetAsyncResult`1..ctor(TrackingContext trackingContext, IResourceDescription[] collectionDescriptions, String[] collectionResourceNames, IEnumerable`1 managementAddresses, NamespaceManagerSettings settings, TimeSpan timeout, AsyncCallback callback, Object state) 
    at Microsoft.ServiceBus.NamespaceManager.OnBeginGetQueue(String path, AsyncCallback callback, Object state) 
    at Microsoft.ServiceBus.NamespaceManager.GetQueue(String path) 
    at WebApplication2.Controllers.ValuesController.Get() </b> 

请建议可能是什么原因导致此问题。 - 列表项

+0

Web应用程序中[WindowsAzure.ServiceBus](https://www.nuget.org/packages/WindowsAzure.ServiceBus/)的版本是什么?您是否正在创建网络核心Web应用程序,目标框架是什么? –

+0

我正在使用WIndowsAzure.ServiceBus版本2.1.0和框架是ASP.Net核心2.0 –

由于WindowsAzure.ServiceBus注意事项如下:

请注意,这个包需要.NET框架4.5.2全部档案。

此外,我可能遇到与使用WIndowsAzure.ServiceBus 2.1.0时提到的相同的问题。另外,我已经检查了其他版本,但最终失败了。

对磊科2.0,你可以充分利用.NET Standard client library for Azure Service Bus和引用包Microsoft.Azure.ServiceBus。为了检索死信队列,你可以按照这个tutorial

我的要求是得到天蓝色的死书。如果计数大于0,那么我必须得到每个死信的详细信息,如死信的描述或原因,然后保存到cosmos数据库中。

我注意到你在WebAPI端点内处理这个处理。我建议你注册MessageReceiver.RegisterMessageHandlerDeadletterQueue/Program.cs中提到的回调,然后在.NET Core 2.x中将它作为后台任务来实现。详情你可以关注here

此外,你可以从你的web应用程序分发这个处理。您可以利用WebJob来触发您的服务总线死区信息队列(例如,特定队列的死信队列名称如下所示:$"{your-queue-name}/$DeadLetterQueue"),并使用DocumentDB绑定将死信号队列信息保存到您的cosmos数据库中。详情请参考How to use Azure Service Bus with the WebJobs SDKAzure WebJobs SDK Extensions

+0

非常感谢您的支持。我会尝试你的建议。 –