2017-07-14 60 views
0

發送的消息我有一個像下面如何我可以讀取Masstransit中間件/ 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的發送方法讀取發送的消息中間件/過濾器。我如何才能做到這一點。期待你的幫助。

回答

-1

我在想,MassTransit將在其上下文中添加一個名爲「消息」的新屬性。現在我正在使用3.5.7版本,並且消息在那裏不可用。希望下一個版本即將發佈。然後我們可以從中間件獲得消息。

以下是來自中間件的上下文的價值。 enter image description here

非常感謝MassTransit和@Alexey Zimarev爲masstransit的新版本。

1

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

MyMessage message; 
context.TryGetPayload(out message); 

我知道這個工作佔用範圍內,但不知道發送/發佈環境。

但是,如果您只想從發送的消息中獲取一些值,則可以更好地使用觀察者。有特定的觀察員發送和發佈。 Here is the documentation關於它。

+0

非常感謝您的回覆。但我在這裏變得空虛。它返回false。 – Hasibul

+0

我更新了答案 –

+0

我將根據發送的消息從中間件設置索賠負責人。如果我從中間件設置聲明,那麼它在消費者中可用,但如果我從觀察者設置它,則消費者無法獲得聲明。所以我需要從中間件設置聲明並從消費者那裏使用它。 – Hasibul

相關問題