Azure 在NServiceBus中接收消息反序列化异常
我刚刚使用NServiceBus进行了重新熟悉,我收到了MessageDeserialization异常和堆栈跟踪,如下所示 关于一些环境信息。。。我正在将azure持久性与队列一起使用。我可以看到订阅表以及订阅服务器的所有端点地址 我有3个MVC Web API托管的应用程序。发布导致此异常的消息的服务/API在其app.config中配置为订阅自身和其他2个API。其他似乎没有问题的用户只有1个订阅。第一个订阅它自己的一个事件。另一个订阅来自第三个服务/api的3个事件 为了解决这个问题我试过的方法。我使用约定来定义我的事件,但现在我的事件消息都实现了IEvent。我还定义了JsonSerializer。这是我的总线配置设置Azure 在NServiceBus中接收消息反序列化异常,azure,nservicebus,nservicebus5,Azure,Nservicebus,Nservicebus5,我刚刚使用NServiceBus进行了重新熟悉,我收到了MessageDeserialization异常和堆栈跟踪,如下所示 关于一些环境信息。。。我正在将azure持久性与队列一起使用。我可以看到订阅表以及订阅服务器的所有端点地址 我有3个MVC Web API托管的应用程序。发布导致此异常的消息的服务/API在其app.config中配置为订阅自身和其他2个API。其他似乎没有问题的用户只有1个订阅。第一个订阅它自己的一个事件。另一个订阅来自第三个服务/api的3个事件 为了解决这个问题我试
public class NServiceBusEndpointConfig : IConfigureThisEndpoint, AsA_Worker
{
public static IBus bus;
public void Customize(BusConfiguration busConfig)
{
var configuration = ContainerConfig.Container.Resolve<ICredentialDomainConfig>();
busConfig.AzureConfigurationSource();
busConfig.UseTransport<AzureStorageQueueTransport>()
.ConnectionString(configuration.NServiceBusQueueConnectionString);
busConfig.UsePersistence<AzureStoragePersistence>();
busConfig.EndpointName("service1");
busConfig.UseContainer<AutofacBuilder>(c => c.ExistingLifetimeScope(ContainerConfig.Container));
busConfig.UseSerialization<JsonSerializer>();
busConfig.License(configuration.NServiceBusLicenseString);
}
}
8dea1c2f-babb-438d-8e4c-a4cd002f5ab6“,
“NServiceBus.ExceptionInfo.Source”:“NServiceBus.Core”,
“NServiceBus.ExceptionInfo.StackTrace”:“NServiceBus.MessageDeserializationException:运行时出错
正在尝试从传输消息中提取逻辑消息
8dea1c2f-babb-438d-8e4c-a4cd002f5ab6-->系统。异常:无法
查找“Newtonsoft.Json.Linq.JObject”的元数据。\r\n请确保
以下内容:\r\n1'Newtonsoft.Json.Linq.JObject'包含在初始
扫描\r\n2.“Newtonsoft.Json.Linq.JObject'实现
“IMessage”、“IEvent”或“ICommand”,或者,如果您不想
若要实现接口,可以使用“不引人注目模式”。\r\n在
NServiceBus.Unicast.Messages.LogicalMessageFactory.Create(类型
消息类型,对象消息,字典2头)
c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\NServiceBus.Core\\Unicast\\Messages\\LogicalMessageFactory.cs:line
59\r\n在
System.Linq.Enumerable。其中选择ArrayInterator
2.MoveNext()\r\n位于
System.Collections.Generic.List1..ctor(IEnumerable
1集合)\r\n
在System.Linq.Enumerable.ToList[TSource](IEnumerable1 source)\r\n
在
NServiceBus.DeserializeLogicalMessagesBehavior.Extract(TransportMessage
(物理信息)
c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\NServiceBus.Core\\Unicast\\Messages\\DeserializeLogicalMessagesBehavior.cs:line
93\r\n在
NServiceBus.DeserializeLogicalMessagesBehavior.Invoke(IncomingContext
上下文,下一步行动)在
c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\NServiceBus.Core\\Unicast\\Messages\\DeserializeLogicalMessagesBehavior.cs:line
40\r\n---内部异常堆栈跟踪的结束---\r\n在
NServiceBus.DeserializeLogicalMessagesBehavior.Invoke(IncomingContext
上下文,下一步行动)在
c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\NServiceBus.Core\\Unicast\\Messages\\DeserializeLogicalMessagesBehavior.cs:line
47\r\n位于中的NServiceBus.BehaviorChain
1.InvokeNext(T上下文)
c:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line
107\r\n在
NServiceBus.BehaviorChain1.c\u显示类5.b\u中的2()
c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\n服务总线.Core\\Pipeline\\BehaviorChain.cs:line
95\r\n在
NServiceBus.ApplyIncomingTransportMessageMutatorsBehavior.Invoke(IncomingContext
上下文,下一步行动)在
c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\NServiceBus.Core\\MessageMutator\\ApplyIncomingTransportMessageMutatorsBehavior.cs:line
20\r\n位于NServiceBus.BehaviorChain的
c:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line
107\r\n在
NServiceBus.BehaviorChain1.c\u显示类5.b\u中的2()
c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\n服务总线.Core\\Pipeline\\BehaviorChain.cs:line
95\r\n在
NServiceBus.SubscriptionReceiverBehavior.Invoke(IncomingContext
上下文,下一步行动)在
c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\NServiceBus.Core\\Unicast\\Subscriptions\\MessageDrivenSubscriptions\\SubscriptionReceiverBehavior.cs:line
32\r\n位于NServiceBus.BehaviorChain的
c:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line
107\r\n在
NServiceBus.BehaviorChain1.c\u显示类5.b\u中的2()
c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\n服务总线.Core\\Pipeline\\BehaviorChain.cs:line
95\r\n位于NServiceBus.UnitOfWorkBehavior.Invoke(IncomingContext
上下文,下一步行动)在
c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\NServiceBus.Core\\UnitOfWork\\UnitOfWorkBehavior.cs:line
42\r\n位于NServiceBus.BehaviorChain的
c:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line
107\r\n在
NServiceBus.BehaviorChain1.c\u显示类5.b\u中的2()
c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\n服务总线.Core\\Pipeline\\BehaviorChain.cs:line
95\r\n位于NServiceBus.ChildContainerBehavior.Invoke(IncomingContext
上下文,下一步行动)在
c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\n服务总线.Core\\Unicast\\Behaviors\\ChildContainerBehavior.cs:line
17\r\n位于NServiceBus.BehaviorChain的
c:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line
107\r\n在
NServiceBus.BehaviorChain1.c\u显示类5.b\u中的2()
c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\n服务总线.Core\\Pipeline\\BehaviorChain.cs:line
95\r\n在
NServiceBus.ProcessingStatisticsBehavior.Invoke(IncomingContext
上下文,下一步行动)在
c:\\BuildAgent\\work\\3206e2123f54fce4\\src\\NServiceBus.Core\\Monitoring\\ProcessingStatisticsBehavior.cs:line
23\r\n位于NServiceBus.BehaviorChain的
c:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line
107\r\n在
N服务总线行为链"NServiceBus.ExceptionInfo.ExceptionType": "NServiceBus.MessageDeserializationException",
"NServiceBus.ExceptionInfo.InnerExceptionType": "System.Exception",
"NServiceBus.ExceptionInfo.HelpLink": null,
"NServiceBus.ExceptionInfo.Message": "An error occurred while attempting to extract logical messages from transport message
"NServiceBus.FailedQ": "<<Queue,
"NServiceBus.TimeOfFailure": "2015-07-06 02:52:26:254996 Z"
public class CredentialPermissionGrantedEvent : IEvent
{
public PermissionInfo Permission { get; set; }
}
public class PermissionInfo
{
public Guid PermissionReference { get; set; }
public DateTime ActivationDate { get; set; }
public Guid CredentialReference { get; set; }
public Guid DeviceReference { get; set; }
public DateTime ExpirationDate { get; set; }
public string Function { get; set; }
public Guid ScheduleReference { get; set; }
public long Timestamp { get; set; }
}