gpt4 book ai didi

java - 模拟 RabbitMQ 进行测试

转载 作者:行者123 更新时间:2023-12-02 03:42:12 25 4
gpt4 key购买 nike

我有一个 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 beans 时,我只是不确定如何执行相同的操作。有人可以帮我吗?

最佳答案

您可以使用上面所示的单独的 bean 配置文件进行测试。使用以下注释您的测试。

@ContextConfiguration(locations = "rabitmqconfiguration.xml") @RunWith(SpringJUnit4ClassRunner.class)

其中 rabbitmqconfiguration.xml 将具有 bean 定义。

关于java - 模拟 RabbitMQ 进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56829471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com