【发布时间】:2022-10-07 03:39:53
【问题描述】:
我正在使用 F# 脚本将事件发布到 Azure 事件中心。等效的 C# 代码如下:
var connectionString = \"<< CONNECTION STRING FOR THE EVENT HUBS NAMESPACE >>\";
var eventHubName = \"<< NAME OF THE EVENT HUB >>\";
await using (var producer = new EventHubProducerClient(connectionString, eventHubName))
{
using EventDataBatch eventBatch = await producer.CreateBatchAsync();
eventBatch.TryAdd(new EventData(new BinaryData(\"First\")));
eventBatch.TryAdd(new EventData(new BinaryData(\"Second\")));
await producer.SendAsync(eventBatch);
}
我不认为以下是最好的惯用 F#,尽管它有效:
let producerClient = EventHubProducerClient(connectionString, eventHubName)
let cancellationToken = CancellationToken()
let eventDataBatch =
cancellationToken
|> producerClient.CreateBatchAsync
let edb = eventDataBatch.Result
edb.TryAdd event
producerClient.SendAsync edb
注意:我没有包含创建event 的代码,但它是一个 JSON 字符串。
如何避免拨打Result?这看起来像一个可以更清洁的步骤。