譯MassTransit 生產訊息

2021-08-21 04:30:13 字數 2116 閱讀 2625

生產訊息

應用程式或服務可以使用兩種不同的方法生產訊息。可以使用sead傳送訊息,也可以使用publish發布訊息。每個方法的行為是非常不同的,但是通過檢視每個特定方法所涉及的訊息型別,可以很容易理解。

當訊息是 sent時,它使用destinationaddress 傳遞交付到特定的端點。當訊息是published,它不會傳送到特定的端點,而是廣播給訂閱了該訊息型別的任何消費者。對於這兩個單獨的行為, 我們描述作為命令傳送的訊息, 以及作為事件發布的訊息。

在建立文件的訊息契約部分時,將對此進行深入討論。 

傳送命令

將命令傳送到端點 需要 isendendpoint 引用,它可以從任何傳送端點提供程式(支援isendendpointprovider的物件)中獲得。應用程式應該始終使用與之最接近的物件來獲取傳送端點, 並且每次需要它時都應該這樣做--應用程式不應快取傳送端點引用。例如,ibus 例項是乙個傳送端點提供程式,但它不應該被消費者用來獲取isendendpoint.consumecontext 還可以提供傳送端點,並且應該使用它,因為它更接近於消費者。

注意:這不能足夠強調——總是從最接近的應用程式**介面獲得傳送端點。使用會話、關聯和發起識別符號將訊息流繫結在一起具有廣泛的邏輯。通過跳過級別並在最接近的範圍之外,可以丟失該資訊,從而阻止有用的跟蹤識別符號被正確處理。

要從傳送端點提供程式獲得傳送端點,請使用getsendendpoint()方法,如下所示。返回傳送端點後,它就可以用於傳送訊息。

public

async task sendorder(isendendpointprovider sendendpointprovider)

send 方法有很多過載。因為masstransit 是圍繞filters和pipes構建的,所以pipes被用來定製傳送的訊息傳遞行為。還有一些有用的過載(通過擴充套件方法),使得 pipe 的構建更容易、更少噪音,等等。

通過介面傳送

由於一般的建議是使用介面, 所以在不需要在下面建立訊息類的情況下, 有一種方便的方法來初始化介面。雖然訊息的版本化仍然需要支援多個介面的類,但下面顯示了一種簡單的傳送介面訊息的方法。

public

inte***ce submitorder

datetime orderdate

decimal orderamount

}public

async task sendorder(isendendpoint endpoint)

);}

設定訊息標題

有多種訊息頭可用以用於訊息的相關性和跟蹤。當發生故障時,也可以重寫masstransit 的一些預設行為。例如,當消費者丟擲異常時,通常會發布故障。如果應用程式希望傳遞到特定位址的故障,則可以通過報頭指定故障位址。如何做到這一點如下所示。

public

inte***ce submitorder

datetime orderdate

decimal orderamount

}public

async task sendorder(isendendpoint endpoint)

, context => context.faultaddress = new uri("

rabbitmq://localhost/order_faults

"));

}

發布事件

訊息的發布與訊息的傳送方式類似,但在這種情況下,使用單個ipublishendpoint 。應用相同的端點規則,應該使用發布終結點的最接近例項。因此, 對消費者的 consumecontext, 以及 ibus 在消費者上下文之外發布的應用程式。

要發布訊息,請參見下面的**。 

public

inte***ce ordersubmitted

datetime orderdate

}public

async task notifyordersubmitted(ipublishendpoint publishendpoint)

);}

譯MassTransit 快速入門

給我看 下面是masstransit的功能設定。public class yourmessage public class program sbc.receiveendpoint host,test queue ep bus.start bus.publish new yourmessage con...

NSCondition 多執行緒解決生產者消費者問題

import viewcontroller.h inte ce viewcontroller 資料緩衝區 property strong,nonatomic nsmutablearray products 執行緒鎖 property strong,nonatomic nscondition cond...

生產者Confirm訊息與Return訊息機制

訊息的確認,是指生產者投遞訊息後,如果broker收到訊息,則會給我們生產者乙個應答 生產者接收應答,用來確定這條訊息是否正常傳送到broker,這種方式也是訊息的可靠性傳遞的核心保障 channel開啟確認模式 channel.confirmselect 在channel上加監聽 addconfi...