在回复时复制nservicebus消息头

时间:2014-09-29 08:49:33

标签: nservicebus

是否可以说NSB将所有邮件头从命令邮件复制到回复? 默认情况下,NSB会复制自己的头文件NSwerviceBus。*,但不能自定义。

这是我的情况: 我有一个传奇和一组工人。 佐贺通过经销商向工人发送信息。 由于某些原因,工作人员无法处理某些消息。它没有失败,只是通过特定回复回复传奇:CannotProcessMessage。

我想要的是处理每个命令3次(Saga应该关联这个,而不是NSB重试机制)。我看到3个解决方案:

  1. 保存每条消息的尝试计数字典是SagaData。这个解决方案不是很好,因为在消息传递的情况下,sagadata会变得非常大

  2. 添加一个属性" AttemptCount"我的留言和回复。这会起作用,但会影响我的工人界面。工人不应该对尝试计数一无所知

  3. 添加" AttemptCount"命令和回复标题。它不会影响worker接口,但是我们必须从命令中复制这个头来回复worker。

  4. 所以,找到的第三个是最好的解决方案,但是无法找到一种方法来说NSB自动将标题从命令复制到回复。 它可以吗?或者也许你可以建议其他解决方案?

    感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用消息mutators(或v5中的新行为管道)来执行该标头复制功能,将其打包在其自己的程序集中,然后将其作为每个worker的一部分进行部署。