2016-07-19 9 views
1

Ich habe Clustering & HA mit zwei rabbitMQ Knoten.Gibt es eine Möglichkeit, rabbitmq Cluster-Adresse mit CachingConnectionFactory zum Schreiben von Komponententests

Ich versuche, mit meinem Cluster wie unten mit Spring-AMQP zu verbinden:

CachingConnectionFactory connectionFactory = new CachingConnectionFactory(); 
connectionFactory.setAddresses("rabbit1:5672,rabbit2:5672"); 

Es ist auch gut funktioniert.

Jetzt begann ich Unit Test Cases zu schreiben, aber ich bin nicht in der Lage, diese Adressen in Testdatei zu bekommen. Im Frühjahr sind keine Getter-Methoden verfügbar, um diese Adressen zu erhalten (ich verwende Spring 4.2.1). Ich habe versucht, connectionFactory.getHost() auch durchzuführen, aber es funktioniert auch nicht.

Gibt es eine Möglichkeit, diese Adressen mit ConnectionFactory (die ich in Unit Test Datei & erfassen kann) zu erhalten?

Antwort

0

Nicht sicher, was das Problem ist, addresses als Variable oder sogar externe Eigenschaft zu extrahieren und es zweimal zu verwenden: in der CachingConnectionFactory Bean-Definition und im Testfall.

ich so etwas wie dies bedeuten (zB application.properties):

rabitmq.addresses=rabbit1:5672,rabbit2:5672 

Im @Configuration:

@Bean 
CachingConnectionFactory connectionFactory(@Value("rabitmq.addresses") addresses) { 
    CachingConnectionFactory connectionFactory = new CachingConnectionFactory(); 
    connectionFactory.setAddresses(addresses); 
    return connectionFactory; 
} 

Und im Testfall:

@Value("rabitmq.addresses") 
private String addresses; 

UPDATE

Im Frühjahr AMQP Tests machen wir so:

@Test 
public void setAddressesTwoHosts() throws Exception { 
    ConnectionFactory mock = mock(com.rabbitmq.client.ConnectionFactory.class); 
    CachingConnectionFactory ccf = new CachingConnectionFactory(mock); 
    ccf.setAddresses("mq1,mq2"); 
    ccf.createConnection(); 
    verify(mock).newConnection(isNull(ExecutorService.class), 
      aryEq(new Address[] { new Address("mq1"), new Address("mq2") })); 
    verifyNoMoreInteractions(mock); 
} 
+0

UPDATE in meiner Antwort sehen. –