这是我继承的项目中现有的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的经验和我有限的参考, 我知道交换是设置中的一个重要部分,因为它在内部将消息中继到队列。
但是,上述配置不包含任何交换信息。
我的问题是:
答案 0 :(得分: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
的路由键。