rabbitmq,动态队列,一个消费者

场景:
主设备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这是阻塞读,同一时刻只能阻塞读一个队列的消息,那岂不是会命令堵塞?

还请高手指点一番,感激不尽~~~~

阅读 2.7k
1 个回答

可以实现,主设备分不同的exchange,然后再通过routingKey路由到不同的子设备。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题