Stiamo avendo un sacco di divertimento e successo usando le funzioni di Azure, ma stiamo cercando consigli su due problemi di progettazione correlati. La nostra prima sfida è che dobbiamo comunicare lo stato dei lavori all'interfaccia utente. Il cliente ha quindi un elenco di articoli e ad ognuno può essere associata l'elaborazione in background. L'interfaccia utente dovrebbe riflettere o nessuno stato, stato in coda o attualmente in elaborazione.
Pensiamo che il modo migliore per gestirlo sia una sorta di borsa di stato (probabilmente in Redis), che può avvisare gli abbonati degli aggiornamenti. Quindi possiamo usare qualcosa come SignalR per notificare l'interfaccia utente. Le mie preoccupazioni riguardano i fallimenti e alla fine lo stato non viene aggiornato.
La seconda sfida è che non vogliamo che una funzione si attivi se l'elaborazione sull'oggetto è già in corso, ma non vogliamo semplicemente desinstalarla e dimenticarla. Qui è dove le funzioni sono un po 'più difficili da gestire, perché se metti in coda un centinaio di oggetti per lo stesso oggetto, non gli importa, e sparerà qualsiasi numero di istanze che può elaborare per la coda. Fondamentalmente, abbiamo bisogno di serializzare per entità. Se CustomerID 123 viene elaborato, non vogliamo che venga rielaborato fino a quando non viene eseguito il lavoro già in esecuzione su 123. È qui che sembra che ci sia una sovrapposizione, dal momento che stiamo già pensando a una sorta di borsa di stato per i problemi di interfaccia utente di cui sopra.
Qualche suggerimento per questo set di strumenti? Vogliamo elaborare il più possibile in parallelo, ma in serie per entità simili.