我有一个应用程序,可以发送电子邮件并执行文件上传(以及图像调整大小)。这两个服务都不经常使用,而且非常轻量级。我已经使用SQS队列将消息(电子邮件的收件人/主题/正文)发送到运行Sinatra应用程序调用SES API的工作程序,这很好地运行着。我的问题是:是否可能将文件上传消息发送到同一工作程序?这可能在不同的队列上进行。似乎让两个EC2实例闲置着相当浪费。PS:我正在使用弹性Beanstalk。
最好在您的消息中引入一个属性TYPE。消息类型可以是EMAIL / FILEUPLOAD。根据属性TYPE,工作者可以使用相应的服务来调用消息。
通过上述方法,您将能够使用一个工作者和一个队列处理消息。您还可以自动缩放服务器,并且处理多个工作者的消息时不会出现任何问题。
当然,为什么不是我的初步答案。实例内部的内容完全由您控制和决定。鉴于您已经指定了应用程序/服务器利用率相当轻松; 您可以将其他应用程序放入同一位置。
只需确保在两个应用程序位于同一实例时,给定的实例大小足够大; 应用程序域(2个应用程序),应用程序配置不会相互干扰。
附注:您将为新应用程序使用单独的队列;如果您需要在队列中发送图像,则可以将图像上传到S3并在SQS消息项中放置其各自的链接以进行处理。