Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.Net核心API中的Azure ServiceBusClient CreateReceiver_Azure_Servicebus - Fatal编程技术网

.Net核心API中的Azure ServiceBusClient CreateReceiver

.Net核心API中的Azure ServiceBusClient CreateReceiver,azure,servicebus,Azure,Servicebus,这是我第一次尝试服务巴士,我不确定我的计划是否有效或是最佳实践 主应用程序是在私有云(记录系统)中托管的基于SQL的旧webforms Azure中新的应用程序.Net核心API在Azure DB之上,带有React前端。 用户将在主应用程序中创建记录,对于某些用户,某些记录需要在新应用程序中自动可用。与在旧的webforms中创建API客户机相比,它似乎是服务总线的完美用途。我有这方面发送的信息刚刚好,不是我有问题的一部分 我知道我能做到,但我真的应该吗?到目前为止,初步测试进展顺利 在API

这是我第一次尝试服务巴士,我不确定我的计划是否有效或是最佳实践

主应用程序是在私有云(记录系统)中托管的基于SQL的旧webforms

Azure中新的应用程序.Net核心API在Azure DB之上,带有React前端。

用户将在主应用程序中创建记录,对于某些用户,某些记录需要在新应用程序中自动可用。与在旧的webforms中创建API客户机相比,它似乎是服务总线的完美用途。我有这方面发送的信息刚刚好,不是我有问题的一部分

我知道我能做到,但我真的应该吗?到目前为止,初步测试进展顺利

在API中,我有一个接收器设置来提取第n个消息并将它们传递给适当的处理程序。处理程序将决定完成或死信消息。完成后,它会在消息之间来回移动,等待新消息到达。目前一次只能拉一条消息,但是我已经测试过了,不受限制

public class ServiceBusMessageReceiver : IServiceBusMessageReceiver
    {
        private readonly IConfiguration _configuration;
        private readonly IServiceBusMessageHandlerService _handlerService;
        private ServiceBusClient _client;
        public ServiceBusMessageReceiver(IConfiguration configuration, IServiceBusMessageHandlerService handlerService)
        {
            _configuration = configuration;
            _handlerService = handlerService;
        }
        public async Task ReceiveMessagesAsync()
        {
            _client ??= new ServiceBusClient(_configuration.GetConnectionString("ServiceBusUrl"));
            try
            {
                await Listen();
            }
            catch (Exception ex)
            {
                //TODO:Logger
                //Did the message lock expire?
                await ReceiveMessagesAsync();
            }
        }

        private async Task Listen()
        {
            var receiver = _client.CreateReceiver(_configuration.GetConnectionString("ServiceBusQueue"));
            await _handlerService.DelegateMessage(await receiver.ReceiveMessagesAsync(maxMessages: 1), receiver);
            await ReceiveMessagesAsync();
        }

    }
在Startup.cs中

Task.Run(() =>
            {
                app.ApplicationServices.GetRequiredService<IServiceBusMessageReceiver>().ReceiveMessagesAsync();
            });
Task.Run(()=>
{
app.ApplicationServices.GetRequiredService().ReceiveMessagesAsync();
});

如果事情停止处理,我有一个控制器可以打电话给监听器。

你的问题是什么?对不起,我对接收器的处理会有性能或可靠性问题吗?