如何从 Masstransit Middle ware/Filter class 读取已发送的消息
How I can read sent message from Masstransit Middle ware/Filter class
我有 middleware/Filter 个关注
public class TestFilter<T> : IFilter<T> where T : class, PipeContext
{
public void Probe(ProbeContext context){}
public async Task Send(T context, IPipe<T> next)
{
var requestInfo = Program.Container.GetInstance<RequestInfo>();
//How i can access sent message from middleware
requestInfo.Token = "some value from message" + "Some Value from Middleware";
}
}
现在我想从 TestFilter 的 Send 方法中读取发送的消息。我怎样才能做到这一点。期待您的帮助。
您可以使用PipeContext.TryGetPayload<T>(out T payload)
MyMessage message;
context.TryGetPayload(out message);
我知道这项工作适用于消费上下文,但不确定 send/publish 上下文。
但是,如果你只是想从发送的消息中获取一些值,你可以更好地使用观察者。发送和发布有特定的观察者。 Here is the documentation关于它。
我认为 MassTransit 将在其上下文中添加名为“Message”的新属性。现在我使用的是 3.5.7 版本,Message 在那里不可用。希望下一个版本能尽快发布。然后我们可以从中间件中获取消息。
以下是来自中间件的上下文的值。
非常感谢 MassTransit 和@Alexey Zimarev 提供新版本的 masstransit。
我有 middleware/Filter 个关注
public class TestFilter<T> : IFilter<T> where T : class, PipeContext
{
public void Probe(ProbeContext context){}
public async Task Send(T context, IPipe<T> next)
{
var requestInfo = Program.Container.GetInstance<RequestInfo>();
//How i can access sent message from middleware
requestInfo.Token = "some value from message" + "Some Value from Middleware";
}
}
现在我想从 TestFilter 的 Send 方法中读取发送的消息。我怎样才能做到这一点。期待您的帮助。
您可以使用PipeContext.TryGetPayload<T>(out T payload)
MyMessage message;
context.TryGetPayload(out message);
我知道这项工作适用于消费上下文,但不确定 send/publish 上下文。
但是,如果你只是想从发送的消息中获取一些值,你可以更好地使用观察者。发送和发布有特定的观察者。 Here is the documentation关于它。
我认为 MassTransit 将在其上下文中添加名为“Message”的新属性。现在我使用的是 3.5.7 版本,Message 在那里不可用。希望下一个版本能尽快发布。然后我们可以从中间件中获取消息。
以下是来自中间件的上下文的值。
非常感谢 MassTransit 和@Alexey Zimarev 提供新版本的 masstransit。