可以使用这两种方法之一在天蓝色服务总线中接收消息。
queueClient.BeginReceiveBatch或messageReceiver.ReceiveBatchAsync
这两种方法在速度方面或以任何其他方式有任何区别。
由于
答案 0 :(得分:1)
如果您不需要批量接收功能,我更喜欢在队列客户端的OnMessage事件上连接回调的方法。我们有一些相当高的吞吐量服务,依赖于这种消息处理模式,没有任何问题(1M +消息/天)
我喜欢您最终使用更少,更简单的代码,并且可以轻松控制并行处理的消息数量的选项,接收模式(查看和锁定,接收和删除)等等
this documentation中有一个示例:
string connectionString =
CloudConfigurationManager.GetSetting("Microsoft.ServiceBus.ConnectionString");
QueueClient Client =
QueueClient.CreateFromConnectionString(connectionString, "TestQueue");
// Configure the callback options
OnMessageOptions options = new OnMessageOptions();
options.AutoComplete = false;
options.AutoRenewTimeout = TimeSpan.FromMinutes(1);
// Callback to handle received messages
Client.OnMessage((message) =>
{
try
{
// Process message from queue
Console.WriteLine("Body: " + message.GetBody<string>());
Console.WriteLine("MessageID: " + message.MessageId);
Console.WriteLine("Test Property: " +
message.Properties["TestProperty"]);
// Remove message from queue
message.Complete();
}
catch (Exception)
{
// Indicates a problem, unlock message in queue
message.Abandon();
}
};