如何从 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。