EventDataクラスには、メッセージにメタデータを追加できるプロパティProperties ... が含まれています。
送信操作中にユーザーが明示的に追加したイベント データのユーザー プロパティを取得します。
イベントを送信するには:
var eventHubClient = EventHubClient.CreateFromConnectionString("connectionString", "eventHubName");
var mypoco = new POCO();
// ...
// Get the Json string
var stringBody = JsonConvert.SerializeObject(mypoco);
// Create the event data
var eventData = new EventData(Encoding.UTF8.GetBytes(stringBody));
// Add the event type.
eventData.Properties.Add("EventType", typeof(POCO).Assembly.FullName);
// Send the data.
eventHubClient.Send(eventData);
メッセージの受信中に、メッセージのメタデータからイベント タイプを取得します。
async Task IEventProcessor.ProcessEventsAsync(PartitionContext context, IEnumerable<EventData> messages)
{
foreach (EventData eventData in messages)
{
var jsonBody = Encoding.UTF8.GetString(eventData.GetBytes());
//Get the event type
var eventTypeName = (string)eventData.Properties["EventType"];
var eventType = Type.GetType(eventTypeName);
// Deserialize the object
var myPoco = JsonConvert.DeserializeObject(jsonBody, eventType);
}
}
それ以外の場合は、 JObjectを使用してボディ タイプを取り除くことができます
async Task IEventProcessor.ProcessEventsAsync(PartitionContext context, IEnumerable<EventData> messages)
{
foreach (EventData eventData in messages)
{
var jsonBody = Encoding.UTF8.GetString(eventData.GetBytes());
// Deserialize the json as a JObject
var myPoco = JObject.Parse(jsonBody);
var a = myPoco["X"]["a"];
}
}