2014-05-14 21 views
12

Czy ktoś wie, czy istnieje równoważnik bazy danych H2 dla kolejek RabbitMQ (lub z możliwością rozszerzenia, aby była kompatybilna z RabbitMQ)?Na serwerze kolejki pamięci

Chciałbym przeprowadzić testy integracyjne bez konieczności uruchamiania i łączenia się z zewnętrznym serwerem RabbitMQ. Byłoby znacznie ładniej, gdybym mógł uruchomić serwer przed wykonaniem pewnego zestawu testów, połączyć się z nim, a następnie wyłączyć wszystko przed wykonaniem następnego zestawu testów.

+0

Zasadniczo szukają alternatywy dla RabbitMQ, która może być osadzona. Jesteś pewien, że RabbitMQ sam nie ma opcji osadzania? ActiveMQ robi na przykład. http://activemq.apache.org/how-do-i-embed-a-broker-inside-a-connection.html – Gimby

+0

Dzięki za sugestię. Nie szukałem tego specjalnie, ale będę musiał rzucić okiem. Ponieważ działa z erlangiem, nie wydaje się, że oferuje tę funkcję ze względu na swoje zależności. – alxbrd

Odpowiedz

8

Po kilku badaniach odkryłem, że istnieje możliwość zamienności między brokerami i klientami dla tej samej wersji AMQP.

Mianowicie, biblioteka klienta zaimplementowana do używania AMQP 0.9.1 powinna teoretycznie być w stanie połączyć się z brokerem, który implementuje AMQP 0.9.1. To oczywiście wiąże się z pewnymi ograniczeniami dotyczącymi określonych funkcji zaimplementowanych w kliencie/brokerze, które nie są zdefiniowane w standardzie AMQP.

Więcej szczegółów na temat obsługiwanych funkcji można znaleźć pod następującym adresem URL: https://www.rabbitmq.com/interoperability.html

Używam Apache Qpid jako zamiennik dla wbudowanego serwera RabbitMQ.

Najprostszym sposobem na rozpoczęcie jest stworzenie pierwotnego pliku konfiguracyjnego z binarnego pliku wykonywalnego Qpid (udokumentowane w instrukcji dla maklera Java), a następnie użyć tego w kodzie, aby rozpocząć Broker:

BrokerOptions configuration = new BrokerOptions("path-to-initial-configuration.json); 
Broker broker = new Broker(); 
broker.startup(configuration); 
+1

Od razu na miejscu! Podejrzewam, że napotkasz problemy przy użyciu funkcji "wydawcy potwierdza"/"wydawcy", która nie jest częścią standardu. Opublikuję wyniki tutaj, gdy tylko będę wiedział, jak sobie z tym poradzić. –