我正在尝试为连接到RabbitMQ代理的Scala / Java应用程序创建集成测试。为了实现这一点,我希望有一个嵌入式经纪人讲我在每次测试之前启动和停止的AMQP。最初,我试图将ActiveMQ引入AMQP作为嵌入式代理,但是该应用程序使用RabbitMQ,因此仅使用AMQP 0.9.3版,而ActiveMQ需要AMQP 1.0版。
我可以使用其他嵌入式代理代替ActiveMQ吗?
完全内存中的解决方案。spring.*根据需要替换属性。
spring.*
<dependency> <groupId>org.apache.qpid</groupId> <artifactId>qpid-broker</artifactId> <version>6.1.1</version> <scope>test</scope> </dependency> public class EmbeddedBroker { public void start() { Broker broker = new Broker(); BrokerOptions brokerOptions = new BrokerOptions(); brokerOptions.setConfigProperty("qpid.amqp_port", environment.getProperty("spring.rabbitmq.port")); brokerOptions.setConfigProperty("qpid.broker.defaultPreferenceStoreAttributes", "{\"type\": \"Noop\"}"); brokerOptions.setConfigProperty("qpid.vhost", environment.getProperty("spring.rabbitmq.virtual-host")); brokerOptions.setConfigurationStoreType("Memory"); brokerOptions.setStartupLoggedToSystemOut(false); broker.startup(brokerOptions); } }
添加initial-config.json为资源:
initial-config.json
{ "name": "Embedded Test Broker", "modelVersion": "6.1", "authenticationproviders" : [{ "name": "password", "type": "Plain", "secureOnlyMechanisms": [], "users": [{"name": "guest", "password": "guest", "type": "managed"}] }], "ports": [{ "name": "AMQP", "port": "${qpid.amqp_port}", "authenticationProvider": "password", "protocols": [ "AMQP_0_9_1" ], "transports": [ "TCP" ], "virtualhostaliases": [{ "name": "${qpid.vhost}", "type": "nameAlias" }] }], "virtualhostnodes" : [{ "name": "${qpid.vhost}", "type": "Memory", "virtualHostInitialConfiguration": "{ \"type\": \"Memory\" }" }] }