我已经阅读了很多关于RabbitMQ交流的文章。但是我找不到任何有用的文章来解释每个交换的用例。他们说的只是
直接交换-绑定密钥和路由密钥应该相同。
主题交换-路由密钥应与绑定密钥的路由模式匹配。
Fanout交换-绑定到该特定交换的所有队列都将收到消息。
Header Exchange-标头应与密钥匹配。
任何人都可以详细解释每个交换和用例吗?
嗯,要使用的交换类型的选择很大程度上取决于您的用例,选择最适合您的交换类型是您的责任。
以下是一些示例:
让我们说您要broadcast(您有多个应该接收消息的应用程序实例)。例如,系统中发生了一些事情(资源变为可用,缓存应该失效,请为它命名),并且您希望所有实例都知道它。然后,您的第一个赌注将是使用fanout交换。
另一个例子。您要单播:发送一条消息,您有多个使用者,但是您希望只有一个使用者会收到一条消息,并尝试对其进行处理。在这种情况下,您将不能使用扇出交换,而会选择其他类型的交换(例如直接交换)。
总之,我相信您应该阅读this article,它描述了相当丰富的amqp协议的各种概念,并提供了不同类型的交换的用例示例。