我正在尝试为使用 RabbitMQ 的应用程序编写集成测试,为此我正在使用 Qpid 代理。我设法启动了服务器并且我的测试正在连接到它,但我需要在启动前在 Qpid 中创建队列。因为我有大量队列,所以我动态创建了 bean:
applicationContext.getBeanFactory().registerSingleton(queueName, queue);
这需要在启动前创建队列。
这是 qpid 配置文件:
{
"name": "tst",
"modelVersion": "2.0",
"defaultVirtualHost" : "default",
"authenticationproviders" : [ {
"name" : "noPassword",
"type" : "Anonymous",
"secureOnlyMechanisms": []
},
{
"name" : "passwordFile",
"type" : "PlainPasswordFile",
"path" : "/src/test/resources/passwd.txt",
"secureOnlyMechanisms": [],
"preferencesproviders" : [{
"name": "fileSystemPreferences",
"type": "FileSystemPreferences",
"path" : "${qpid.work_dir}${file.separator}user.preferences.json"
}
]
}
],
"ports" : [
{
"name": "AMQP",
"port": "5673",
"authenticationProvider": "passwordFile",
"protocols": [
"AMQP_0_10",
"AMQP_0_8",
"AMQP_0_9",
"AMQP_0_9_1"
]
}],
"virtualhostnodes" : [ {
"name" : "default",
"type" : "JSON",
"virtualHostInitialConfiguration" : "{ \"type\" : \"Memory\" }"
}]
}
从官方文档(https://qpid.apache.org/releases/qpid-broker-j-7.1.4/book/Java-Broker-Management-Channel-REST-API.html#d0e2130)我读到可以为 REST 调用创建队列,所以我尝试使用 RestTemplate 来实现这一点,但它似乎没有创建队列。
@BeforeClass
public static void startup() throws Exception {
brokerStarter = new BrokerManager();
brokerStarter.startBroker();
RestTemplate restTemplate = new RestTemplate();
restTemplate.put("http://localhost:5673/api/latest/queue/default/queue1", "");
restTemplate.put("http://localhost:5673/api/latest/queue/default/queue-2", "");
}
有人可以解释我做错了什么吗?谢谢你!
人到中年有点甜
至尊宝的传说
相关分类