vertx.eventBus().send("foo", "hello");
}
@Test
public void testReplyToReply() {
final RxEventBus rxEventBus = new RxEventBus(vertx.eventBus());
Observable<RxMessage<String>> obsReply1 = rxEventBus.registerHandler("foo");
Observable<RxMessage<String>> obsReply2 = obsReply1.flatMap(new Func1<RxMessage<String>, Observable<RxMessage<String>>>() {
@Override
public Observable<RxMessage<String>> call(RxMessage<String> stringRxMessage) {
// Reply to the message
assertEquals("hello1", stringRxMessage.body());
return stringRxMessage.observeReply("goodday1");
}
});
Observable<RxMessage<String>> obsReply3 = obsReply2.flatMap(new Func1<RxMessage<String>, Observable<RxMessage<String>>>() {
@Override
public Observable<RxMessage<String>> call(RxMessage<String> stringRxMessage) {
// Reply to the reply!
assertEquals("hello2", stringRxMessage.body());
return stringRxMessage.observeReply("goodday2");
}
});
obsReply3.subscribe(new Action1<RxMessage<String>>() {
@Override
public void call(RxMessage<String> stringRxMessage) {
}
});
Observable<RxMessage<String>> obsSend1 = rxEventBus.send("foo", "hello1");
Observable<RxMessage<String>> obsSend2 = obsSend1.flatMap(new Func1<RxMessage<String>, Observable<RxMessage<String>>>() {
@Override
public Observable<RxMessage<String>> call(RxMessage<String> stringRxMessage) {
// The first reply