2016-02-13 51 views
0

我遇到此链接,该链接显示如何使用Servicecontrol事件。 http://docs.particular.net/servicecontrol/contracts#servicecontroleventsxmlconfig-v3_x-5_xNServicebus - 攻丝ServiceControl MessageFailed事件

在实现这一点时,只考虑持久性在这里如何工作。我用什么作为持久性存储?我的产品环境中,我实现了SQL持久性。由于servicecontrol拥有RavenDB作为其持久性存储,我是否使用相同的存储,即RavenDB? 任何人都有这样的配置如何看起来像吗?

回答

0

你可以自由使用任何你想要的持久存储。您只需在此处订阅服务控制的事件,因此服务控制的内部持久性对您无关紧要。这里唯一重要的是您将端点配置为使用文中所示的json序列化。

0

服务控制使用RavenDB来保存消息以用于错误和审计目的。它通过Service Pulse和Service Insight可以使用的API公开这些信息。当您尝试订阅邮件时,您不必担心它将RavenDB用作持久性。这只是服务控制的一个实现细节。

持久性不像您配置的传输那么重要。如果您使用的是SQL Transport,则Service Control已将表(队列)添加到您已设置的NSB Transport数据库中。服务控制通过您配置的传输,以与其他NSB主机相同的方式监听应用中的消息。

如果服务控制当前正在运行,那么您就准备好了。您只需订阅这些事件并像使用任何其他NSB主机一样定义端点。从文档:

<UnicastBusConfig> 
    <MessageEndpointMappings > 
    <add Assembly="ServiceControl.Contracts" 
     Endpoint="Particular.ServiceControl" /> 
    </MessageEndpointMappings> 
</UnicastBusConfig> 

记住,当你(或你的团队)配置服务控制,他们不得不将其指定使用要与您的NSB主机其余部分的运输。

+0

启动我的端点时出现以下错误: 错误NServiceBus.GenericHost启动端点时出现异常。 System.Exception:没有选择持久性,请通过调用configuration.UsePersistence来选择持久性。() –

+0

由于某种原因,我无法获得此项工作。问题是,我的主机安装在D:\ NServiceBus \ **********下。NsbAudit.QueueService和ServiceControl安装在C:\ Program Files文件(x86)\特定软件\ ServiceControl下。 我在servicecontrol日志中看到消息: 2016-02-16 18:31:04.5882 | 300 |信息| ServiceControl.EventLog.GenericAuditHandler |事件:MessageFailed发出 2016-02-16 18:31:04.5882 | 48 | Info | ServiceControl.EventLog.GenericAuditHandler | Event:MessageFailed发射 2016-02-16 18:31:05.1498 | 181 | Info | ServiceControl.EventLog.GenericAuditHandler |事件:MessageFailed发出 –

+0

@HarshNanchahal使用与其余部分相同的持久性和传输的主机。持久性并不意味着排队的邮件存储在哪里。 –