在试图理解直接交换、扇出交换和主题交换之间的区别时,我想确认主题交换的优点是生产者推送到交换并指定一个完全特定的路由密钥,队列可以通过通配符绑定到多个路由密钥。e、 g.主题推送到。。。
$channel->basic_publish($msg, 'logs-exchange', 'error.critical.ram')
一个向待命团队发送所有关键错误消息的队列将像...
$channel->queue_bind('on-call-team', 'logs-exchange', 'error.critical.*')
和一个类似的队列,错误为。*。ram将向负责增加ram的系统操作团队发送消息。
这是主题交换的正确用例吗?主题交换是唯一可以支持这种灵活性的交换吗?相反,主题交换和扇出交换都可以通过主题交换实现吗?
这是主题交换的正确用例吗,
是的,这个交换的用法绝对正确。你会看到它非常强大
而话题交换是否是唯一可以支持这种灵活性的交换?
是的,类似的直接交换不支持通配符,因此您必须在绑定到它时指定完整路由密钥,否则它将不会接收消息。可能会有一些自定义消息使用主题交换作为基础,但我不能马上想到一个
相反,主题交换和扇出交换都可以通过主题交换实现吗?
我不知道你在这里是什么意思。是的,你可以用相同的绑定键将多个队列绑定到交换,这样它们都会收到相同的消息。但是如果你不需要这个功能,那么你不妨使用扇出交换本身。
此外,我还有一个绑定到一些队列的扇出交换和一个主题交换。此exchange的发布者使用路由密钥,即使扇出exchange不需要路由密钥,但它路由到的主题exchange需要路由密钥。这很好,因为这对扇形输出没有影响,导致话题交换出现问题
我有一个场景,我需要执行一系列流程,每个步骤都在独立的应用程序中完成和扩展。我正在为所有交换使用主题交换。当前拓扑如下所示: P- 我们正在“版本化”队列,以处理可能影响消息结构的需求更改。绑定可能如下所示: 步骤1。exchange绑定到步骤1。v1。使用绑定键step1排队。v1 步骤1。exchange绑定到步骤1。v2。使用绑定键step1排队。v2级 还有其他与版本无关的绑定模式也使局部
我有点迷茫,正在尝试实施话题交流,不确定需要什么。 我想有几个路由键和一个主题交换(默认的amq.topic)。我的钥匙是: 创建customer.app 创建customer.app 客户。*.创建 我希望我的队列是持久的,但是我需要1个“客户”队列还是2个appA和appB队列?我已经弄清楚了我的发布者;连接、交换声明、基本发布。 但我正在与消费者斗争。假设我想打开3个控制台,上面提到的每个路
我正在寻求一些关于如何最好地配置我的rabbitMQ交换的建议。 我试着用循环系统的方法来交换话题。每个使用者都有自己的(唯一的)命名队列连接到主题交换。我希望交换为“相同”主题循环消息到每个使用者队列-比如。 我尝试了多个组合,但似乎只能同时将消息传递到使用者队列,这实际上意味着我要处理两次消息,每个使用者一次。 为了清楚起见,我还有一个扇出交换,我用它来“控制”消费者(启动、停止等)。这应该在
我们有一个具有多个kafka spout任务的拓扑。每个spout任务都应该从一组Kafka主题中读取消息的子集。主题必须使用通配符(如aaa.bbb.*)来订阅。预期的行为是,所有spout任务将共同使用与通配符匹配的所有主题中的所有消息。每个消息只路由到单个spout任务(忽略失败场景)。当前是否支持此操作?
我正在尝试使用声明列表为RabbitMQ配置铲子插件。我已将远程exchange配置为在创建时具有备用exchange。 我的问题是,我无法让slot的配置文件包含这个参数,所以RabbitMQ在启动时崩溃。 这是我的配置的样子: 问题出在名为my-exchange-topic的目的交换上。如果我去掉声明部分,那么配置文件就工作了。 这是错误: =INFO REPORT==== 31-Jul-20
我们正在重建消息队列系统。在讨论RabbitMQ交换类型时,我注意到有两种可能的解决方案可以实现路由消息的多播特性。 > < li> 话题交流。通过设置主题交换和特定模式的路由关键字,消息将被路由到指定的队列。即产品。*.根据AMQP规范,这通常是实现发布/订阅模式的交换类型。 报头交换。所谓的“类固醇直接交换”。对于多播消息,它甚至更灵活,因为忽略了路由键,而是每个消息都有“x-match”头,