1

这是我继承的项目中现有的 spring rabbit 配置 -

<rabbit:connection-factory id="rabbitConnectionFactory"
    host="${rabbitmq.host}"
    port="${rabbitmq.port}"
    virtual-host="${rabbitmq.virtualHost}"
    username="${rabbitmq.username}"
    password="${rabbitmq.password}"/> 

<rabbit:template id="ampqTemplate" connection-factory="rabbitConnectionFactory" routing-key="" />
<rabbit:admin connection-factory="rabbitConnectionFactory" />
<rabbit:queue name="${rabbitmq.queueName}"   />

我没有使用 Rabbit 的经验,并且由于我的参考有限,我知道交换是设置中的重要部分,因为它在内部将消息中继到队列。

但是,上述配置不包含任何交换信息。

我的问题是:

  1. 即使是简单的队列配置,交换也绝对重要。?
  2. 不定义交换是否有任何含义
  3. 上述配置中是否明显缺少其他配置?
4

1 回答 1

3

如果您未定义交换,则将使用默认交换。这是一个直接交换,它将使用队列的名称作为其路由键。

看起来您的配置中没有任何遗漏。我的是:

<rabbit:connection-factory id="connectionFactory" host="${rabbit.host}" username="${rabbit.username}" password="${rabbit.password}" virtual-host="${rabbit.vhost}"/>
<rabbit:template id="rabbitTemplate" connection-factory="connectionFactory" message-converter="jsonMessageConverter" routing-key="event-queue"/>

您可以取出rabbit:queue定义并将队列名称用作rabbit:template.

于 2013-07-23T06:23:17.873 回答