快速问题:我有一个传奇,它可能有一个场景,它需要处理可能在两种情况下出现的消息。 传奇仍然开放的地方和传奇已被标记为完整的地方。

如果传奇开放,伟大,继续正常。 如果传奇没有打开,它需要开始一个新的传奇。 处理这种情况的最佳做法是什么? 如果传奇是开放的, IHandleMessages<>显然很有效。 但是不会IAmStartedByMessages<>导致两个传奇打开吗? 这会很糟糕。 谢谢

===============>>#1 票数:4 已采纳

如果可以解析已经打开的传奇, IAmStartedByMessages<>将不会导致2个传奇打开。 您可以使用IAmStartedByMessages<>而不需要IHandleMessages<>

===============>>#2 票数:2

您仍然可以使用IAmStartedByMessages <>处理消息,只要确保将其包含在ConfigureMapping覆盖中即可。 这样,根据您找到现有saga的方式,您将返回现有实例或创建新实例。 HTH。

===============>>#3 票数:1

正如我从NserviceBus看到的那样,如果发现一些处理消息的传奇,新的传奇将不会启动。 (我检查了NBus 2.0)

所以你的场景应该正常工作。 您可以从示例应用程序中轻松检查。

你描述的情况仍然很奇怪。 我更喜欢有两种消息类型,一种用于传奇开始,另一种用于传奇工作。

  ask by Paul C Huff translate from so

未解决问题?本站智能推荐:

1回复

NServiceBus传奇不处理Azure消息

我正在部署部署在蔚蓝云服务上的NServiceBus sagas的奇怪行为。 他们永远不会收到回复消息,永远也不会醒来……尽管如果将其部署在本地,一切正常,而且当Sagas担任WebApi云服务角色时,它也能正常工作... 那是我对nsb的配置 这是我用于持久性的配置 N
1回复

NServicebus延迟消息的传奇故事?

如何在NServicebus中延迟处理传奇消息24小时?
1回复

Nservicebus传奇

我正在使用IAmStartedByMessages启动nsb传奇。 在此特殊消息的处理上,如果某些情况失败,我正在执行某种业务逻辑,我不希望Saga得以保留。 我怎样才能做到这一点? 谢谢阿ja
1回复

NServiceBus-处理相同消息的多个端点

我有多个端点(在不同服务器上,来自不同公司)指向同一队列(我使用“ OverrideLocalAddress”方法)。 当我为此队列发送消息时,我将添加带有公司ID的标头。 我想要正确的端点来选择此消息。 我正在使用Pipeline过滤接收到的消息(按标题中的公司ID),但是只有第一个
1回复

如何防止NServiceBus传奇多次启动?

我想创建一个由消息“Event1”启动的传奇,但它将忽略具有相同应用id的“重复”开始消息的接收(这可能是由于两个或更多用户在短时间内点击UI按钮) 。 文档似乎表明这种方法可行: Saga声明IAmStartedByMessages<Event1> Saga使用
2回复

重用NServiceBus消息传奇数据

有没有理由不在saga数据中重用NServiceBus消息( IMessage )? 我的意思是有这样的消息: 然后在像这样的传奇和传奇数据中使用它: 我意识到消息是由传输层(MSMQ)存储的,而传奇数据是通过saga持久保存到DB的。 它适用于我当前的用例,并且重用该类似乎
1回复

Nservicebus传奇超时

我有一个传奇,它会每30秒检查一次API调用的状态,如果从调用返回的状态成功,则传奇结束,否则,传奇将等待30秒并再次尝试。 如果API调用在60分钟内未返回成功响应,则该传奇超时并结束。 我在60分钟的超时时间内无法启动。 我的代码是 谁能看到我要去哪里错了? 谢谢
1回复

NServicebus传奇性能

我对NSB传奇的性能感到困扰。 我们有一个传奇故事来安排长时间运行的会话。 Saga将大量消息发送到不同的处理器,然后得到答复。 我看到sagas队列包含大量传入消息。 每个消息处理都非常快,但是在处理下一条消息之间会有延迟。 这是日志文件的一部分: 我们看到了4秒的延迟。
1回复

nServiceBus传奇nHibernate

我是nServiceBus的新手。 nServiceBus版本: 2.6.0.1505 我想在数据库中保留传奇。 为什么这样不起作用: 它抛出一个错误: 在处理OnStart的初始状态期间,Topshelf.Internal.ServiceController`1
1回复

NServiceBus作为批处理消息

我发现后端消息处理中出现了常见的模式: ServiceA生成大量消息。 ServiceB一次处理一条消息。 ServiceC发出对数据库或Web服务调用的调用,这可以通过批量调用获得显着的性能和可靠性。 在某些情况下,从ServiceA预批处理消息或在ServiceB中批