当前位置: 首页 > 知识库问答 >
问题:

RabbitMQ:交换、队列和绑定--谁来设置什么?

任飞鸣
2023-03-14
  • 交换:1个类型为“direct”的交换
  • 队列:1个队列
  • 绑定:队列绑定到Exchange

每当消息被发送到exchange时,它就会被传递到队列,辅助进程就会得到它们的任务。

每件东西都要经久耐用。

    null
  • 交换:1个具有“扇出”类型的交换
  • 队列:n个队列,每个使用者一个
  • 绑定:每个队列都需要绑定到Exchange

那么是谁安排了什么?在我看来:

  • 生产者创建交换
  • 使用者创建队列(因为它是自己的队列,而生产者不能知道谁对消息感兴趣)
  • 使用者为其队列创建到Exchange的绑定
  • 使用者侦听其队列

共有1个答案

龙飞
2023-03-14

我认为你说的是对的,除了第三种情况。

如果用户脱机时消息不应该丢失,那么您需要持久的队列,并且队列不能是auto_deleted。

在我看来,其他的一切都是对的。

 类似资料:
  • 生产者可以发送两种不同的消息类型;和(每个消息的内容无关,但假设它们都有一个字段)。每个消息使用的路由密钥分别是和。生产者不依赖默认的Java序列化,而是使用。 使用者有一个队列,该队列使用的路由键绑定到同一个交换。一旦使用,使用者所要做的就是在日志文件中打印每个消息的。为了检索字段的值,需要将JSON有效负载转换为某种对象。 这两个组件之间不共享消息类(和)。使用者的对象在其消息表示中可能有或多

  • 在我看来,javaconfiguration类或基于XML的配置中的声明都是静态的。我知道如何为队列、交换或绑定设置更动态的值(例如名称),如下所示: 但我想知道是否可以创建一个未定义数量的Queue实例,并将它们注册为bean,就像工厂注册它的所有实例一样。 我不太熟悉Spring@Bean注释及其局限性,但我尝试了

  • 是否有可能为带有“直接”类型的Rabbitmq交换设置一些“默认”队列? 比如,我有一个exchange A,队列Q1、Q2、Q3和QDef。因此,如果使用路由密钥Q1发布某个消息,它将转到Q1。但如果消息使用路由密钥Q4,则它应该转到QDef。若路由密钥不是现有队列的名称,则消息应转到QDef。 有可能做兔子吗?也许交换不应该是“直接”类型,而应该是其他类型? 换句话说。如果某个消费者为某个路由

  • 我试图使用BasicGet仅检索与通道的Exchange/Queue/RoutingKey组合匹配的消息。 我们的路由密钥的一个例子是 我遇到的问题是,路由密钥被完全忽略,所有消息无论指定的路由密钥是什么,都可以通过BasicGet获得。 我使用的是直接交换。我认为直接就足够了,我不需要通配符的能力,您可以通过主题交换获得路由键。 直接交换和路由密钥解决方案是否应该与BasicGet配合使用? 谢

  • 我有一些问题,试图了解类型标头的交换是如何工作的。 只有一个交换,myExchange 三个队列: myQueue1 myQueue2 myQueue3 绑定: < li >我的兑换= 我希望消息的标题具有多个值;test1、test2、test3 的任意组合(例如:单独 test1、test1 和 test2、test3 和 test2 等) myQueue3只接收具有MyHeader的消息:[

  • 我有两个独立实例(p1、p2)的生产者应用程序和两个独立实例(c1、c2)的消费者应用程序。 生产者p1连接到exchange,主题为t1,队列名称为name1。 使用者c1连接到exchange,主题为t1,队列名称为name1。 生产者p2连接到exchange,主题为t2,队列名称为name1。 使用者c2连接到exchange,主题为t2,队列名称为name1。 我在RabbitMQ GU