在最新的Microsoft.Azure.WebJobs.ServiceBus package中,它为您提供了从eventhubs receive batches of messages的能力。我想设置一批我想要收到多少邮件。
核心ServiceBus库允许您重载Receive()
函数并提供batch size。
如何在initial config of an EventHubs receiver中执行此操作,还是需要其他功能?
答案 0 :(得分:4)
您可以通过eventHub
中的host.json
配置块执行此功能,如here所述。 E.g:
{
"eventHub": {
"maxBatchSize": 500,
"prefetchCount": 100
}
}
我们在创建EventProcessorOptions
时将这些配置设置应用于EventProcessorHost
(请参阅here)。
答案 1 :(得分:1)
斯蒂芬,
可以通过EventProcessorOptions配置MaxBatchSize
,您可以在创建新EventHubConfiguration时将其作为参数传递。
var options = EventProcessorOptions.DefaultOptions;
options.MaxBatchSize = 50;
var eventHubConfig = new EventHubConfiguration(options);
string eventHubName = "MyHubName";
eventHubConfig.AddSender(eventHubName, "Endpoint=sb://test.servicebus.windows.net/;SharedAccessKeyName=SendRule;SharedAccessKey=xxxxxxxx");
eventHubConfig.AddReceiver(eventHubName, "Endpoint=sb://test.servicebus.windows.net/;SharedAccessKeyName=ReceiveRule;SharedAccessKey=yyyyyyy");
config.UseEventHub(eventHubConfig);
JobHost host = new JobHost(config);
正如您在EventHubConfiguration.cs的源代码中注意到的那样,如果未指定EventProcessorOptions
,则MaxBatchSize
默认设置为1000
而不是10
public EventHubConfiguration(
EventProcessorOptions options,
PartitionManagerOptions partitionOptions = null)
{
if (options == null)
{
options = EventProcessorOptions.DefaultOptions;
options.MaxBatchSize = 1000;
}
_partitionOptions = partitionOptions;
_options = options;
}