我有一个队列接收器,它从队列中读取消息并处理消息(进行一些处理并将一些数据插入到 azure 表或检索数据)。
我观察到的是,我的处理方法 ( SendResponseAsync()
) 抛出的任何异常都会导致重试,即将消息重新传递到默认值 10 次。
是否可以自定义此行为,即我只重试某些异常而忽略其他异常。就像如果有一些网络问题,那么重试是有意义的,但如果是BadArgumentException(poisson message)
,那么我可能不想重试。
由于ServiceBus
客户端库负责重试,我们可以自定义此行为吗?
这是接收端的代码
public MessagingServer(QueueConfiguration config)
{
this.requestQueueClient = QueueClient.CreateFromConnectionString(config.ConnectionString, config.QueueName);
this.requestQueueClient.OnMessageAsync(this.DispatchReplyAsync);
}
private async Task DispatchReplyAsync(BrokeredMessage message)
{
await this.SendResponseAsync(message);
}