我最近观看了一个关于 RabbitMQ 如何工作的精彩演示,它对整个 AMQP 实现的工作原理很感兴趣。
我正在考虑将它用于一个项目,但我想知道以下问题的一些答案:
1) 消息的代理和生产者是否可以在同一个地方?我确实了解 RabbitMQ 允许使用虚拟主机,所以这样的事情是可能的,对吗?
2) RabbitMQ 可以通过两个不同的子网传输消息吗?我知道它可以通过 LAN 或 WAN 进行传输,但是通过两个子网进行传输有多容易? (这里的一个答案实际上是桥接它们)。
3) 关于问题 1,如果原始代理出现故障,将代理功能故障转移到另一个位置有多困难?
4) 我确实了解 RabbitMQ 实际上提供了不同类型的消息传输。其中之一是扇出类型,或多或少类似于广播 Action 。是否有可能拥有相反类型的东西。这意味着您有多个生产者和多个队列,所有队列都传输到单个消费者?
最佳答案
1)消费者/生产者在哪里并不重要,只要他们能够到达(访问IP:端口)代理即可。虚拟主机与此无关。
2)与第一个答案或多或少相同,RabbitMQ 我们使用网络并且不知道它处于哪种网络中;也不需要知道或关心。
3)故障转移很简单,找rabbitmq cluster和 high availability 。对于客户,您必须自己照顾(如何重新连接等)。
4) 是的,广播是可能的,你应该有一个 look at tutorials以及有什么样的交流。 编辑 正如 zapl 在评论中指出的那样,您也可以执行广播的逆操作。
关于java - RabbitMQ 实现细节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37632767/