我有一个Spring应用程序,我在其中使用RabbitMQ来发布和使用消息。连接工厂是通过以下方式创建的:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:int="http://www.springframework.org/schema/integration"
xmlns:int-amqp="http://www.springframework.org/schema/integration/amqp"
xmlns:rabbit="http://www.springframework.org/schema/rabbit"
xmlns:int-stream="http://www.springframework.org/schema/integration/stream"
xsi:schemaLocation="http://www.springframework.org/schema/integration/amqp http://www.springframework.org/schema/integration/amqp/spring-integration-amqp.xsd
http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd
http://www.springframework.org/schema/integration/stream http://www.springframework.org/schema/integration/stream/spring-integration-stream.xsd
http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit-1.4.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="RabbitMQ" class="com.services.RabbitMqListenerService" />
<rabbit:connection-factory id="connectionFactory"
host="${rabbitmq.host}" port="${rabbitmq.port}"
username="${rabbitmq.username}" password="${rabbitmq.password}" cache-mode="${rabbitmq.cacheMode}"
connection-cache-size="${rabbitmq.connectionCacheSize}"/>
</beans>
但是,当我运行测试而不是创建此连接时,我想创建一个内存映射,该映射将作为我的队列。我要确保所有消息都同步,因为异步消息可能会使测试不稳定。
在spring-boot应用程序中,这非常简单。在application.java
中,我可以添加以下代码,它会起作用:
public ConnectionFactory connectionFactory() {
if (Boolean.parseBoolean(environment.getProperty("mock.rabbitmq"))) {
return new MockRMQConnectionFactory();
}
com.rabbitmq.client.ConnectionFactory rabbitmqConnectionFactory = new com.rabbitmq.client.ConnectionFactory();
rabbitmqConnectionFactory.setHost(environment.getProperty("rabbitmq.address"));
rabbitmqConnectionFactory.setUsername(environment.getProperty("rabbitmq.user"));
rabbitmqConnectionFactory.setPassword(environment.getProperty("rabbitmq.password"));
rabbitmqConnectionFactory.setConnectionTimeout(
Integer.parseInt(environment.getProperty("rabbitmq.connection.timeout")));
return connectionFactory;
}
当我尝试在XML文件(rabbitmq.xml
)中创建rmq bean时,我不确定该怎么做。有人可以在这里帮我吗。
答案 0 :(得分:0)
您可以像上面显示的那样拥有单独的bean配置文件进行测试。 使用以下注释注释测试。
@ContextConfiguration(位置=“ rabitmqconfiguration.xml”) @RunWith(SpringJUnit4ClassRunner.class)
其中rabitmqconfiguration.xml将具有bean定义。