Мое решение на qpid-broker @ 6.1.1, добавьте ниже в pom.xml
<dependency>
<groupId>org.apache.qpid</groupId>
<artifactId>qpid-broker</artifactId>
<version>6.1.1</version>
<scope>test</scope>
</dependency>
Файл конфигурации qpid как:
{
"name" : "${broker.name}",
"modelVersion" : "6.1",
"defaultVirtualHost" : "default",
"authenticationproviders" : [ {
"name" : "anonymous",
"type" : "Anonymous"
} ],
"ports" : [ {
"name" : "AMQP",
"port" : "${qpid.amqp_port}",
"authenticationProvider" : "anonymous",
"virtualhostaliases" : [ {
"name" : "defaultAlias",
"type" : "defaultAlias"
} ]
} ],
"virtualhostnodes" : [ {
"name" : "default",
"type" : "JSON",
"defaultVirtualHostNode" : "true",
"virtualHostInitialConfiguration" : "{ \"type\" : \"Memory\" }"
} ]
}
код для запуска сервера qpid
Broker broker = new Broker();
BrokerOptions brokerOptions = new BrokerOptions();
// I use fix port number
brokerOptions.setConfigProperty("qpid.amqp_port", "20179");
brokerOptions.setConfigurationStoreType("Memory");
// work_dir for qpid's log, configs, persist data
System.setProperty("qpid.work_dir", "/tmp/qpidworktmp");
// init config of qpid. Relative path for classloader resource or absolute path for non-resource
System.setProperty("qpid.initialConfigurationLocation", "qpid/qpid-config.json");
brokerOptions.setStartupLoggedToSystemOut(false);
broker.startup(brokerOptions);
код для остановки сервера qpid
broker.shutdown();
Так как я использую режим анонимного доступа, клиент должен сделать следующее:
SaslConfig saslConfig = new SaslConfig() {
public SaslMechanism getSaslMechanism(String[] mechanisms) {
return new SaslMechanism() {
public String getName() {
return "ANONYMOUS";
}
public LongString handleChallenge(LongString challenge, String username, String password) {
return LongStringHelper.asLongString("");
}
};
}
};
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
factory.setPort(20179);
factory.setSaslConfig(saslConfig);
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
Вот и все.
Еще немного о том, как это сделать на другой версии.
Вы можете скачать двоичный пакет qpid-broker с официального сайта. После загрузки и распаковки вы можете запустить его для проверки в качестве сервера для вашего случая. После того, как ваш случай хорошо подключился к серверу, с помощью командной строки создайте или просто скопируйте исходный файл конфигурации в QPID_WORK, удалите бесполезный файл id и используйте его для встроенного сервера, как указано выше.
Самое сложное - это аутентификация. Вы можете выбрать режим PLAIN, но вы должны добавить имя пользователя и пароль в начальной конфигурации. Я выбираю анонимный режим, который требует небольшого кода при подключении. Для другого режима аутентификации вы должны указать файл паролей или хранилище ключей / сертификатов, которое я не пробовал.
Если он все еще не работает, вы можете прочитать документ qpid-borker и код основного класса в артефакте qpid-broker, который показывает, как работает командная строка для каждой настройки.