将NServiceBus Saga与ConversationId相关联

乔尼

我目前有一些在基本消息类上传递自定义CorrelationId的sagas。所有事件和命令都从该基类继承,因此可以轻松访问CorrelationId。结果,ConfigureHowToFindSaga映射看起来像这样:

protected override void ConfigureHowToFindSaga(SagaPropertyMapper<MySagaData> mapper)
{
     mapper.ConfigureMapping<MyCommand>(message => message.CorrelationId)
        .ToSaga(sagaData => sagaData.CorrelationId);   

    mapper.ConfigureMapping<MyEvent>(message => message.CorrelationId)
        .ToSaga(sagaData => sagaData.CorrelationId);    
} 

在saga的每个步骤(以及saga与之通信的其他服务)中,自定义的CorrelationId当前手动从消息映射到消息,如下所示:

   public Task Handle(MyCommand message, IMessageHandlerContext context)
   { 
      // do something 

      return context.Publish(new MyEvent { CorrelationId = message.CorrelationId });
   }

我想知道是否可以使用NSBConversationId消息头替换自定义的CorrelationId,因为我相信NSB已经自动将此消息从消息映射到消息。

我对此有两个疑问:
1.这听起来合理吗?
2.如果是,是否有一种简单的方法来设置ConfigureMapping映射,以使传奇从context.MessageHeaders[Headers.ConversationId]消息正文而不是直接从消息正文的属性读取我意识到我可以编写一个自定义的SagaFinder来挖掘标题并获取ConversationId,然后使用它来查找传奇。但是,我认为如果我需要为每个传奇做这些,那么整个方法可能是错误的。谢谢

肖恩·法玛(Sean Farmar)

传奇地图属性的目的是从业务方面为传奇提供唯一的标识符,即银行交易,订单ID,索赔ID,或者另一个示例可能是贷款ID。因此中继技术标识符听起来像是您走错了方向...

您对这些英雄的故事是什么?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将App与Epub格式相关联

来自分类Dev

将玩家ID与交易相关联?

来自分类Dev

将修订与Redmine问题相关联

来自分类Dev

将Braintree PaymentMethod与地址相关联

来自分类Dev

将按钮与Enter键相关联

来自分类Dev

CakePhp将评论与帖子相关联

来自分类Dev

将信息框与图像相关联

来自分类Dev

将玩家ID与交易相关联?

来自分类Dev

将组合的索引与值相关联

来自分类Dev

将特定索引与向量相关联

来自分类Dev

Firebase - 将图片与用户相关联?

来自分类Dev

将运算结果与哈希图值相关联

来自分类Dev

将aiohttp请求与其响应相关联

来自分类Dev

将“外部”类模型与flask sqlalchemy相关联

来自分类Dev

将javascript对象与SVG元素相关联

来自分类Dev

将文件类型与Chrome打包应用相关联

来自分类Dev

将屏幕与kivy中的GridLayout类相关联

来自分类Dev

Laravel-5,将角色与用户相关联

来自分类Dev

SceneKit:将节点与模型对象相关联

来自分类Dev

我正在尝试将C ++引用与指针相关联

来自分类Dev

如何将github问题与分支相关联?

来自分类Dev

在WPF中,什么将ListBoxItem与ListBox相关联?

来自分类Dev

QNetworkAccessManager:将响应与请求相关联

来自分类Dev

如何将各个按钮与各个div相关联?

来自分类Dev

无法将部分代码与按钮相关联

来自分类Dev

追溯将提交与故障单相关联

来自分类Dev

将图像与ReactJS中的帖子相关联

来自分类Dev

将文件类型与特定程序相关联

来自分类Dev

将屏幕与kivy中的GridLayout类相关联