2017-09-25 17 views
0

vertimeをawakeResult、awaitEventなどの関数と併用すると、なぜVertxを同期的に使用しようとしていますか? 私はそれに続いてlinkを実行しました。ここでvertx:awaitResult関数を使用するとエラーが発生する

ラインは、私が実行しようとしていますされています

long tid = awaitEvent(h -> vertx.setTimer(1000, h)); 
System.out.println("Timer has now fired"); 

をしかし、私はfolloingエラーを取得:

sept. 25, 2017 11:25:41 PM io.vertx.ext.web.impl.RoutingContextImplBase 
GRAVE: Unexpected exception in route 
java.lang.StackOverflowError 
    at io.vertx.ext.web.impl.RoutingContextWrapper.request(RoutingContextWrapper.java:57) 
    at io.vertx.ext.web.impl.RoutingContextWrapper.request(RoutingContextWrapper.java:57) 
    at io.vertx.ext.web.impl.RoutingContextWrapper.request(RoutingContextWrapper.java:57) 
    at io.vertx.ext.web.impl.RoutingContextWrapper.request(RoutingContextWrapper.java:57) 
    at io.vertx.ext.web.impl.RoutingContextWrapper.request(RoutingContextWrapper.java:57) 
    at io.vertx.ext.web.impl.RoutingContextWrapper.request(RoutingContextWrapper.java:57) 

私はこの問題を解決できるかあなたは知っていますか?

答えて

1

この単純な例では、動作:

import co.paralleluniverse.fibers.Suspendable; 
import io.vertx.core.Vertx; 
import io.vertx.ext.sync.Sync; 
import io.vertx.ext.sync.SyncVerticle; 

public class SyncExample extends SyncVerticle { 

    public static void main(String[] args) { 
     Vertx vertx = Vertx.vertx(); 

     vertx.deployVerticle(SyncExample.class.getName()); 
    } 

    @Suspendable 
    @Override 
    public void start() throws Exception { 
     System.out.println("Waiting for single event"); 
     long tid = Sync.awaitEvent(h -> vertx.setTimer(1000, h)); 
     System.out.println("Single event has fired with timerId=" + tid); 
    } 
} 

得コンソール出力である:

Waiting for single event 
Waiting for single event 
Single event has fired with timerId=0 

(達人座標として表される)関連する依存関係は次のとおり

<dependency> 
    <groupId>io.vertx</groupId> 
    <artifactId>vertx-sync</artifactId> 
    <version>3.4.1</version> 
</dependency> 
<dependency> 
    <groupId>co.paralleluniverse</groupId> 
    <artifactId>quasar-core</artifactId> 
    <version>0.7.9</version> 
</dependency> 

この例でありますかなり自己完結しているので、あなたはそれを「そのまま」掴むことができます。これがうまくいかない場合は、質問を追加の詳細で更新することができます。MCVEが理想的ですが、少なくとも、(a)あなたの頂点を定義するコード(同期の周りの数行だけでなく、コール)と(b)この頂点を展開するコード。

+0

それは私のために働く。しかし、私はルート内で同じことをやろうとしていますが、これが理由ですが、それでも解決できませんでした! –

+0

質問を更新して、(a)あなたの頂点を定義するコード(同期呼び出しの周りの数行だけでなく)と(b)この頂点を展開するコードを表示することができます。 – glytching

関連する問題