Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 在配置要在使用者中交付的端点时添加元数据_Asp.net Core_Masstransit - Fatal编程技术网

Asp.net core 在配置要在使用者中交付的端点时添加元数据

Asp.net core 在配置要在使用者中交付的端点时添加元数据,asp.net-core,masstransit,Asp.net Core,Masstransit,因此,当我配置端点并设置ep.Consumer(context)时,我是否能够向每次调用时出现在consumercontext中的使用者添加一些内容 例如,类似这样的事情: MyMetaData metadata = new MyMetaData() { foo: "Bar" } ep.Consumer<MyConsumer>(context, c => c.somehowincludemetadata(metadata));

因此,当我配置端点并设置
ep.Consumer(context)
时,我是否能够向每次调用时出现在consumercontext中的使用者添加一些内容

例如,类似这样的事情:

        MyMetaData metadata = new MyMetaData() { foo: "Bar" }
        ep.Consumer<MyConsumer>(context, c => c.somehowincludemetadata(metadata));
MyMetaData metadata=newmymetadata(){foo:“Bar”}
消费者(上下文,c=>c.somehowincludemetadata(元数据));
然后在消费者中:

        public Task Consume(ConsumeContext<Message> context)
        {
            var metadata = (MyMetaData)context.heresyourmetadata();
        }
公共任务消费(消费上下文)
{
var metadata=(MyMetaData)context.heresyourmetadata();
}
显然,psudeo代码——但我所追求的本质上是一种方法,通过这种方法,我可以将上下文(如客户名称、计算机名称)添加到上下文中,以便在处理过程中检索

这完全是在消费者方面,出版商不会知道需要包括哪些数据


非常感谢。

元数据通常必须来自某个地方,可以作为依赖项注入消费者。另一种选择是,如果它基于消息或消息头中的数据,则使用中间件,例如可以将有效负载添加到
ConsumeContext
。此选项可以设置容器中范围内的共享上下文对象的属性,或者如上所述,添加有效负载

另一种选择是以某种方式添加一个在使用者之前调用的异步方法,如下所示

ep.ConfigureConsumer<MyConsumer>(context, 
    x => x.UseExecute(context => context.Consumer.Property = Value)));
ep.ConfigureConsumer(上下文、,
x=>x.UseExecute(context=>context.Consumer.Property=Value));
或者,您也可以添加有效负载:

ep.ConfigureConsumer<MyConsumer>(context, 
    x => x.UseExecute(context => 
        context.GetOrAddPayload(() => new MyPayload())));
ep.ConfigureConsumer(上下文、,
x=>x.UseExecute(上下文=>
GetOrAddPayload(()=>newmypayload());