Rozwiązanie całkowicie w pamięci. Zastąp właściwości spring.*
zgodnie z wymaganiami.
<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);
}
}
Dodaj initial-config.json
jako źródło:
{
"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\" }"
}]
}
RabbitMQ realizuje AMQP 0,8; 0.9.1 i AMQP 1.0. Jeśli korzystasz z mac, dość łatwo jest uruchomić/zatrzymać rabbitmq do swoich testów. To jest dla PHP, ale może ci pomóc w przypadku użycia http://videlalvaro.github.io/2013/04/using-rabbitmq-in-unit-tests.html –
Witam @old_sound, dziękuję za zaglądanie w to. Idealnie chciałbym uniknąć konieczności sprawdzania rabbitmq na pudełku, nasze testy działają na serwerze CI, który nie jest w stanie łatwo zainstalować RabbitMQ. – ahjmorton
Czy ten serwer CI ma co najmniej zainstalowany Erlang?Jeśli tak, możesz po prostu pobrać archiwum królików, rozpakować je i uruchomić/zatrzymać dla testów. –