配置要在消费者中交付的端点时添加元数据
Add metadata when configuring an endpoint to be delivered in the Consumer
因此,当我配置端点并设置 ep.Consumer<MyConsumer>(context)
- 我是否能够向每次调用时出现在 ConsumeContext 中的消费者添加一些内容?
例如这样的事情:
MyMetaData metadata = new MyMetaData() { foo: "Bar" }
ep.Consumer<MyConsumer>(context, c => c.somehowincludemetadata(metadata));
然后在消费者中:
public Task Consume(ConsumeContext<Message> context)
{
var metadata = (MyMetaData)context.heresyourmetadata();
}
显然伪代码 - 但我所追求的本质上是一种方法,通过它我可以将上下文(如客户名称、计算机名称)添加到上下文中以在处理过程中检索。
完全在消费者一方,发布者不会知道需要包含的数据。
非常感谢。
元数据通常必须来自某个地方,它可以作为依赖项注入到消费者中。如果它基于消息中的数据或 headers,另一种选择是使用中间件——例如可以将有效负载添加到 ConsumeContext
的 scoped filter。此选项可以在容器范围内的共享上下文 object 上设置属性,或者如前所述,添加有效负载。
另一种选择是以某种方式添加在消费者之前调用的异步方法,如下所示。
ep.ConfigureConsumer<MyConsumer>(context,
x => x.UseExecute(context => context.Consumer.Property = Value)));
或者,您也可以添加负载:
ep.ConfigureConsumer<MyConsumer>(context,
x => x.UseExecute(context =>
context.GetOrAddPayload(() => new MyPayload())));
因此,当我配置端点并设置 ep.Consumer<MyConsumer>(context)
- 我是否能够向每次调用时出现在 ConsumeContext 中的消费者添加一些内容?
例如这样的事情:
MyMetaData metadata = new MyMetaData() { foo: "Bar" }
ep.Consumer<MyConsumer>(context, c => c.somehowincludemetadata(metadata));
然后在消费者中:
public Task Consume(ConsumeContext<Message> context)
{
var metadata = (MyMetaData)context.heresyourmetadata();
}
显然伪代码 - 但我所追求的本质上是一种方法,通过它我可以将上下文(如客户名称、计算机名称)添加到上下文中以在处理过程中检索。
完全在消费者一方,发布者不会知道需要包含的数据。
非常感谢。
元数据通常必须来自某个地方,它可以作为依赖项注入到消费者中。如果它基于消息中的数据或 headers,另一种选择是使用中间件——例如可以将有效负载添加到 ConsumeContext
的 scoped filter。此选项可以在容器范围内的共享上下文 object 上设置属性,或者如前所述,添加有效负载。
另一种选择是以某种方式添加在消费者之前调用的异步方法,如下所示。
ep.ConfigureConsumer<MyConsumer>(context,
x => x.UseExecute(context => context.Consumer.Property = Value)));
或者,您也可以添加负载:
ep.ConfigureConsumer<MyConsumer>(context,
x => x.UseExecute(context =>
context.GetOrAddPayload(() => new MyPayload())));