Dart和RabbitMQ绑定交换
我使用STOMP,并编写了一个测试:Dart和RabbitMQ绑定交换,rabbitmq,dart,stomp,Rabbitmq,Dart,Stomp,我使用STOMP,并编写了一个测试: test('can subscribe and send events to mq server', () async { StompClient client2 = await serverClient.connect(mqIp, port: mqPort, login: login, passcode: password); client2.sendJson('Domain changed', {'a':'b'}); clien
test('can subscribe and send events to mq server', () async {
StompClient client2 = await serverClient.connect(mqIp,
port: mqPort, login: login, passcode: password);
client2.sendJson('Domain changed', {'a':'b'});
client2.disconnect();
StreamController controller = new StreamController();
Stream<String> stream = controller.stream.asBroadcastStream();
StompClient client1 = await serverClient.connect(mqIp,
port: mqPort, login: login, passcode: password);
client1.subscribeString("Entity changed", 'Domain changed',
(Map<String, String> headers, String message) {
controller.add(message);
}, ack: AUTO);
await for (String message in stream) {
String expectedEntity =
'{\"a\":\"b\"}';
expect(message, equals(expectedEntity));
break;
}
client1.unsubscribe("Entity changed");
client1.disconnect();
}, timeout: new Timeout(new Duration(seconds: 6)));
test('可以订阅并向mq服务器发送事件',()异步{
StompClient client2=等待serverClient.connect(mqIp,
端口:mqPort,登录名:login,密码:passcode:password);
sendJson('Domain changed',{'a':'b'});
client2.disconnect();
StreamController=新的StreamController();
Stream=controller.Stream.asBroadcastStream();
StompClient client1=等待serverClient.connect(mqIp,
端口:mqPort,登录名:login,密码:passcode:password);
client1.订阅(“实体已更改”,“域已更改”,
(映射头、字符串消息){
添加(消息);
},ack:AUTO);
等待(流中的字符串消息){
字符串期望值=
“{\'a\':\'b\'”;
期望(消息,等于(期望));
打破
}
客户1.取消订阅(“实体变更”);
client1.disconnect();
},超时:新超时(新持续时间(秒:6));
当我运行pub运行测试时
我得到测试超时
在绑定部分的RabbitMQ管理中,我得到:(默认exchange绑定)
,消息总数为零:
是否可以在一个通道中发送和接收消息
如果我在RabbitMQ管理中使用client1.subscribebestring(ack:CLIENT,…)
,我会收到一条“内存中”的消息,但测试仍然test超时
,我无法从mq获取消息。
也许我必须设置amq.fanout exchange,但如何才能做到这一点?将RabbitMq与dart结合使用的最佳选择: