Java 如果队列为';存在什么?

Java 如果队列为';存在什么?,java,python,queue,rabbitmq,message-queue,Java,Python,Queue,Rabbitmq,Message Queue,我有一种情况,我有一个RabbitMQ集群。我有多个生产商,他们生产不同的数据。我希望每个生产者根据参数设置一个临时队列,如果队列为空,则删除该队列 例如,生产商A和B: A ----- tmp_a_queue B ----- tnp_b_queue 我想这样做来扩展系统的吞吐量。接下来,我希望我的消费者在能够消费时创建一个队列,并从两个队列中获取消息 例如,将消费者C添加到上述模板: _______________________ A -

我有一种情况,我有一个RabbitMQ集群。我有多个生产商,他们生产不同的数据。我希望每个生产者根据参数设置一个临时队列,如果队列为空,则删除该队列

例如,生产商A和B:

A ----- tmp_a_queue

B ----- tnp_b_queue
我想这样做来扩展系统的吞吐量。接下来,我希望我的消费者在能够消费时创建一个队列,并从两个队列中获取消息

例如,将消费者C添加到上述模板:

                          _______________________
A ----- tmp_a_queue\     |                       |
                     ====| SOME MAGIC GOES HERE  |-----tmp_c_queue C
B ----- tnp_b_queue/     |_______________________|
我知道如何创建
A
B
C

问题:

是否可以设置某种类型的
内部交换
,以便从左侧的所有
tmp_队列
获取消息(注意它们动态地来来去去去),并将其发送到消费者队列(右侧),只有当消费者可用时?

如果您希望交易所“消费”消息,您可以使用插件来实现这一点。队列订阅交换(绑定到它们),而不是其他

或者,您可以与他们进行主题交流。用*绑定tmp_队列_c,用各自的绑定密钥绑定其他队列。但是在这个场景中,其他队列仍然会有它们的消息(它们不会被使用,除非有人使用它们而不是exchange)


编辑:我还有一个关于exchange到exchange的绑定,在您的情况下可能会很有用。在这种情况下,您可以将正常的exchange发布到
tmp_a_队列
tmp_b_队列
,但另一个exchange
magic
绑定到前两个队列绑定到的同一个exchange。然后将
tmp_c_queue
绑定到
magic
交换,您将实现所需的行为。

我认为每个动态创建的队列都需要一个动态实例化的转发器进程,负责转发其消息。我想您可以添加一个“签入”队列,每个动态队列都会发布到该队列中,这样您的“神奇”流程就可以知道在出现新队列时在何处查找。是的,我也在考虑这个问题。你知道内部excahnges是否会对我有所帮助吗?这不是我理解交换工作的方式(尽管我故意避免将这些作为答案,因为我对消息队列不太了解(只是进入它们)为了不让更多的知识渊博的人望而却步,您可以将一条消息分发到多个队列(基于绑定或主题),这里您尝试的是相反的方法,听起来像是另一个队列。