场景:
主设备A,绑定子设备A1,A2,A3...An
主设备B,绑定子设备B1,B2,B3...Bn
所有针对子设备的操作命令(例如通断电,查询设备读数),均通过相应的主设备 发送给对应操作的子设备,主设备处理能力有限,命令冲击会使主设备内存溢出,所以需要有命令队列,分组,delay,就算设备A下面的子设备操作命令命令在排队,也不影响设备B下面子设备命令发送。
例如操作子设备A1,给设备A1执行通电操作,通电命令 通过主设备A 发送给 A1
这样的场景,能否通过RabbitMQ来实现?
翻阅了RabbitMQ的一些资料,涉及到 交换机,路由键,队列,频道,生产者,消费者
如何通过RabbitMQ实现以上场景,操作的 设备不一样,涉及到 动态 队列?是否可以只有一个消费者处理多个队列?
目前的想法是:采用订阅,direct,将路由键和queue的名字设置为 主设备名,然后下挂子设备的所有操作命令全部在对应的主设备queue里面,
或者
采用订阅,采用同一个路由键(例如:operation),然后队列名使用主设备名
两种方式,是否可以只有一个消费者?
另外网上说 consume这是阻塞读,同一时刻只能阻塞读一个队列的消息,那岂不是会命令堵塞?
还请高手指点一番,感激不尽~~~~
可以实现,主设备分不同的
exchange
,然后再通过routingKey
路由到不同的子设备。