Amazon SQS avec C # et SQL Server

On m'a demandé d'utiliser Amazon SQS dans notre nouveau système. Notre activité dépend de certaines tâches / requests des clients à nos agents de support, et une fois que le client a soumis sa tâche / requête, il doit être mis en queue dans ma database SQL Server et toutes les tâches en attente doivent être affectées à l'agent non occupé. parce que le stream dit que l'agent peut traiter ou gérer une tâche / request en attendant, donc, si j'ai 10 tâches / requests sont arrivées à mon système, tout devrait être mis en attente, alors, le système devrait transférer la tâche à l'agent qui est libre maintenant et une fois que l'agent a résolu la tâche, il devrait avoir le suivant, sinon, le système devrait attendre n'importe quel agent jusqu'à la fin de sa tâche actuelle pour en assigner un nouveau, et bien sûr, il ne devrait pas y avoir de duplication dans les tâches / requests de traitement … et ainsi de suite.

De quoi ai-je besoin maintenant?

Nous requestr de concevoir un système basé sur un paragraphe de prose est une command assez grande.
SQS est simplement un système de queue de nuage. Selon votre description, je ne suis pas sûr que cela améliorerait votre système.

Tout d'abord, vous stockez déjà tout dans votre database, alors pourquoi avez-vous besoin de stocker des éléments dans la queue? Si vous voulez avoir la sémantique de queue tout en stockant des choses dans votre database, vous pouvez envisager SQL Server Service Broker ( https://technet.microsoft.com/en-us/library/ms345108(v=sql.90).aspx#sqlsvcbr_topic2 ) qui prend en charge les files d'attente dans SQL. Alternativement, sauf si votre échelle est assez élevée (plus de 100 tâches / seconde peut-être), vous pouvez simplement interroger la table pour les tâches qui doivent être récupérées.

Deuxièmement, il semble que vous ayez un stream de travail autour des tâches qui pourrait s'étendre à plus d'une seule queue pour que les agents puissent les récupérer. Par exemple, avez-vous un suivi des tâches (envoyer un courriel aux clients pour leur requestr comment était leur service, mettre une tâche en attente jusqu'à ce qu'un client vous revienne, etc.)? Si c'est le cas, vous pouvez regarder Simple Workflow Service ( https://aws.amazon.com/swf/ ) ou, puisque vous êtes déjà sur la stack de Microsoft, vous pouvez regarder Windows Workflow ( https://msdn.microsoft.com /en-us/library/ee342461.aspx )

Par ailleurs, SQS ne garantit pas une "seule livraison" par défaut, donc si la duplication est un gros problème pour vous, vous devrez soit faire votre propre déduplication, soit utiliser les files d'attente FIFO ( http://docs.aws.amazon.com/ AWSSimpleQueueService / latest / SQSDeveloperGuide / FIFO-queues.html ) qui prennent en charge la déduplication, mais sont limités à 300 transactions / seconde (alias: environ 100 messages / seconde pour les API standard send -> receive -> delete. peut être beaucoup plus élevé, mais count tenu de votre cas d'utilisation, il ne semble pas que vous seriez en mesure d'utiliser le traitement par lots sans beaucoup de travail).