我如何阅读来自Masstransit Middle ware / Filter类的已发送消息

时间:2017-07-14 18:08:48

标签: masstransit

我有中间件/过滤器,如下面的

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方法读取已发送的消息。我怎么能做到这一点。期待你的帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用PipeContext.TryGetPayload<T>(out T payload)

MyMessage message;
context.TryGetPayload(out message);

我知道这个工作用于消费上下文但不确定发送/发布上下文。

但是,如果您只想从已发送的消息中获取某些值,则可以更好地使用观察者。有发送和发布的特定观察员。 Here is the documentation关于它。

答案 1 :(得分:-1)

我在想MassTransit会添加名为&#34; 消息&#34;的新属性他们的背景。现在我使用的是版本3.5.7,并且消息在那里不可用。希望下一个版本即将发布。然后我们可以从中间件获取消息。

以下是来自中间件的上下文的价值。 enter image description here

非常感谢MassTransit和@Alexey Zimarev为新版masstransit。