当前位置: 首页 > 面试题库 >

如何让Spring RabbitMQ创建一个新的队列?

李开宇
2023-03-14
问题内容

根据我对Rabbit-mq的(有限的)经验,如果您为尚不存在的队列创建新的侦听器,则会自动创建该队列。我试图将Spring AMQP项目与rabbit-
mq一起使用来设置侦听器,但是却出现错误。这是我的xml配置:

<rabbit:connection-factory id="rabbitConnectionFactory" host="172.16.45.1" username="test" password="password" />

<rabbit:listener-container connection-factory="rabbitConnectionFactory"  >
    <rabbit:listener ref="testQueueListener" queue-names="test" />
</rabbit:listener-container>

<bean id="testQueueListener" class="com.levelsbeyond.rabbit.TestQueueListener"> 
</bean>

我在RabbitMq日志中得到了这个:

=ERROR REPORT==== 3-May-2013::23:17:24 ===
connection <0.1652.0>, channel 1 - soft error:
{amqp_error,not_found,"no queue 'test' in vhost '/'",'queue.declare'}

还有来自AMQP的类似错误:

2013-05-03 23:17:24,059 ERROR [org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer] (SimpleAsyncTaskExecutor-1) - Consumer received fatal exception on startup
org.springframework.amqp.rabbit.listener.FatalListenerStartupException: Cannot prepare queue for listener. Either the queue doesn't exist or the broker will not allow us to use it.

从堆栈跟踪中可以看出,队列是在“被动”模式下创建的-任何人都可以指出我如何不使用被动模式来创建队列,这样我就不会看到此错误?还是我想念其他东西?


问题答案:

解决我问题的方法似乎是添加一个管理员。这是我的xml:

<rabbit:listener-container connection-factory="rabbitConnectionFactory"  >
    <rabbit:listener ref="orderQueueListener" queues="test.order" />
</rabbit:listener-container>

<rabbit:queue name="test.order"></rabbit:queue>

<rabbit:admin id="amqpAdmin" connection-factory="rabbitConnectionFactory"/>

<bean id="orderQueueListener" class="com.levelsbeyond.rabbit.OrderQueueListener">   
</bean>


 类似资料:
  • 我有一个jobIntentService创建一个文件以便在其中添加一些文本,但我得到错误。我不知道我做错了什么...下面是我的代码: 谢谢你的帮助!

  • 如果你已经使用过Android Studio和Gradle,那么这一章会比较简单。我不会给出很多细节和截图,因为用户界面和细节可能会一直变化。 我们的应用是由一个简单的天气app组成,正如所使用的Google’s Beginners Course in Udacity。我们可能会关注不同的事情,但是app的想法都是一样的,你会发现在一个典型的app里面会包括很多不同的东西。如果你的Android开

  • 我无法得到为什么appcompat_v7是自动创建的…发现它很烦人…请有人帮助摆脱这个问题。我试图创建新项目,发现每个新创建的项目都是这样的。

  • 本文向大家介绍dart 创建一个新列表,包括了dart 创建一个新列表的使用技巧和注意事项,需要的朋友参考一下 示例 列表可以通过多种方式创建。 推荐的方法是使用List文字: 该List构造可以作为很好: 如果您喜欢更强的键入,还可以通过以下方式之一提供类型参数: 为了创建一个小的可增长列表,该列表为空或包含一些已知的初始值,首选文字形式。对于其他种类的列表,有专门的构造函数: 另请参阅关于集合

  • 我有一个rabbitListener,它连续异步地侦听队列“用户消息”的用户消息。除非队列中加载了大量消息,否则一切都正常。当消息批量发布到队列时,同一用户的消息首先被处理,从而其他用户的消息等待轮到他们。 我无法使用优先级队列,因为所有用户的优先级都相同。所以我想创建新的队列,并在运行时监听它们。一旦消息被使用,所有队列都将是短暂的。(队列将被删除) 在浏览时,我发现可以使用RabbitAdmi

  • It doesn’t matter if you have an existing repository/directory of code, or if you are starting a completely new project, adding Yarn works the same way every time. In your terminal/console in the dire