Increase performance async Parallel.Foreach c# code : I have a deviceList of more than 10k items and want to send data by calling another method.

I tried to use Parallel.Foreach but I'm not sure is this the correct way to do it.

I have published this webapp on azure, I have tested this for 100 it works fine but for 10k it got timeout issue. Is my implementation need any tuning , thanks

    private List<Task> taskEventList = new List<Task>();
    public async Task ProcessStart()
            {
         string messageData = "{"name":"DemoData","no":"111"}";
         RegistryManager registryManager;
    
         Parallel.ForEach(deviceList, async (device) =>
                        {
                         // get details for each device and use key to send message
                            device = await registryManager.GetDeviceAsync(device.DeviceId);
                            SendMessages(device.DeviceId, device.Key,messageData);
                        });
    if (taskEventList.Count > 0)
                {
                    await Task.WhenAll(taskEventList);
                }
    }
    
    private void SendMessages(string deviceId, string Key,string messageData)
        {
            DeviceClient deviceClient = DeviceClient.Create(hostName, new DeviceAuthenticationWithRegistrySymmetricKey(deviceId, deviceKey), Microsoft.Azure.Devices.Client.TransportType.Mqtt);
    
            //created separate Task
            var taskEvents = Task.Run(() => ProcessMessages(deviceId, string messageData));
            taskEventList.Add(taskEvents);
        }
    
    
    private async Task ProcessMessages(string deviceId, string messageData)
        {
                    while (run 15 minutes)
                    {
                    await deviceClient.SendEventAsync(messageData);
                    }
        }