2017-04-25 47 views
0

我使用akka.net持久性來在sql server數據庫中存儲一些消息類型。在這種業務場景下它可以工作。在其他情況下,我只是想使用C#.net反序列化消息,並在不使用akka.net的情況下查看消息屬性。怎麼可能?使用C#De-Serialize akka.net持久性消息

+0

您使用過哪些串行器將事件序列化到SQL Server中? – Horusiath

+0

我使用了akka.net自帶的默認序列化 –

回答

0

在Akka.Persistence與配置SQL日誌,所有的事件數據的土地爲(默認情況下它是dbo.EventJournal上的SQLServer)用於事件採購表的Payload列二進制序列化的。將來如果您選擇的數據庫支持該格式,將有可能將此格式從二進制更改爲JSON數據類型。

根據您使用哪個序列化程序,您可以簡單地通過反序列化Payload列的內容來檢索原始事件。雖然你不應該使用默認的序列化程序,如果你已經做到了,你需要知道在v1.2的時候它是JSON.NET。你可以把它用JsonConvert與保護對象引用(PreserveReferencesHandling.Objects)只是反序列化:

byte[] payload = ...; // get bytes from Payload column 
var settings = new JsonSerializerSettings {PreserveReferencesHandling = PreserveReferencesHandling.Objects}; 
using (var stream = new MemoryStream(payload)) 
using (var reader = new StreamReader(stream)) 
{ 
    var domainEvent = JsonConvert.DeserializeObject(reader.ReadToEnd(), settings); 
} 

描述事物像事件的訂單總額(按標記功能使用)的事件日誌表隨身攜帶的元數據和最顯着的,持久ID的其他領域的演員和特定事件的序列號(在單個演員的背景下單調增長)。