我有工作,我打算通过REDIS Pub/Sub发送给工人。作业涉及处理图像(JPEG,20KB-800KB,通常约150KB)。
将图像作为消息的有效负载直接发送是一个好主意吗?
我根本不认为这是一个问题。如果您确信您的订户/工作人员能够跟上并且您不会冒着RAM耗尽的风险,那么我认为这是一种有效的方法。我不知道它是否比建议的nginx流更好,但作为内存数据存储redis应该非常接近硬件和网络限制。
请记住,redis pub / sub不是“持久的”所以如果图像发布到某个频道,目前没有人订阅它就不会被选中。图像无处可去。
如果需要耐用性,可以使用redis List轻松构建持久队列。
您可以通过base64将JPEG文件编码为字符串,并将字符串发布到通道。
发送数据(有效负载JPEG文件)的大小将增加到大约1.5x到2x。