【问题标题】:How to connect a grails app to Consul through micronaut Http Client?如何通过 micronaut Http Client 将 grails 应用程序连接到 Consul?
【发布时间】:2019-05-03 12:51:40
【问题描述】:

我有一个 grails 3.2.0 网络配置文件应用程序。我想连接到一个运行良好并正确连接到本地领事的单独的 micronaut 应用程序。

这是我的 micronaut 控制器:

@Controller("/test")
class TestController {

    @Get("/")
    def index(){
        return "Welcome to micronaut"
    }

    @Get("/test")

    Single<String> test() {
        return Single.just("Hello There")
    }
}

这是我的 grails 控制器:

class CardClientController {

    @Autowired
    NewCardClient newCardClient

    def index() {
        def result = newCardClient.getCards()
        respond result
    }
}

NewCardClient 接口:

@Client("firstmicroservice")
public interface NewCardClient {

    @Get("/test/test")
    Single<String> getCards();

}

我在 grails 应用程序中添加的依赖项:

compile 'io.micronaut:inject-java:1.0.0.M1'
compile 'io.micronaut:discovery-client:1.0.0.M1'
compile 'io.micronaut:spring:1.0.0.M1'
runtime 'io.micronaut:runtime:1.0.0.M1'

当我以 /cardClient/ 的身份点击 grails 控制器时,出现以下错误:

2019-05-03 18:20:30.333 ERROR --- [nio-8200-exec-1] i.m.retry.intercept.RecoveryInterceptor  : Type [grailsmono.NewCardClient$Intercepted] executed with error: Cannot convert publisher into target type: class io.reactivex.Flowable

java.lang.UnsupportedOperationException: Cannot convert publisher into target type: class io.reactivex.Flowable
    at io.micronaut.cache.interceptor.CacheInterceptor.interceptPublisher(CacheInterceptor.java:352)
    at io.micronaut.cache.interceptor.CacheInterceptor.intercept(CacheInterceptor.java:120)
    at io.micronaut.aop.MethodInterceptor.intercept(MethodInterceptor.java:41)
    at io.micronaut.aop.chain.InterceptorChain.proceed(InterceptorChain.java:155)
    at io.micronaut.discovery.client.$CachingCompositeDiscoveryClientDefinition$Intercepted.getInstances(Unknown Source)
    at io.micronaut.discovery.client.CachingCompositeDiscoveryClient.getInstances(CachingCompositeDiscoveryClient.java:38)
    at io.micronaut.http.client.loadbalance.DiscoveryClientRoundRobinLoadBalancer.select(DiscoveryClientRoundRobinLoadBalancer.java:58)
    at io.micronaut.http.client.DefaultHttpClient.resolveRequestURI(DefaultHttpClient.java:720)
    at io.micronaut.http.client.DefaultHttpClient.exchange(DefaultHttpClient.java:410)
    at io.micronaut.http.client.DefaultHttpClient.exchange(DefaultHttpClient.java:154)
    at io.micronaut.http.client.HttpClient.retrieve(HttpClient.java:125)
    at io.micronaut.http.client.RxHttpClient.retrieve(RxHttpClient.java:60)
    at io.micronaut.http.client.RxHttpClient.retrieve(RxHttpClient.java:33)
    at io.micronaut.http.client.interceptor.HttpClientIntroductionAdvice.intercept(HttpClientIntroductionAdvice.java:331)
    at io.micronaut.aop.MethodInterceptor.intercept(MethodInterceptor.java:41)
    at io.micronaut.aop.chain.InterceptorChain.proceed(InterceptorChain.java:155)
    at io.micronaut.retry.intercept.RecoveryInterceptor.intercept(RecoveryInterceptor.java:74)
    at io.micronaut.aop.MethodInterceptor.intercept(MethodInterceptor.java:41)
    at io.micronaut.aop.chain.InterceptorChain.proceed(InterceptorChain.java:155)
    at grailsmono.NewCardClient$Intercepted.getCards(Unknown Source)
    ...

无法连接到 consul 并且无法调试原因。请帮忙!!!

【问题讨论】:

  • 我还想知道我是否可以在 Grails 2.5.6 应用程序中使用 micronaut 客户端并可以连接到领事。谢谢,
  • 仅供参考...目前没有充分的理由使用 Micronaut 的里程碑版本 (1.0.0.M1)。我们大约在 6 个月前发布了 1.0.0,从那时起已经发布了 5 或 6 个版本。
  • @JeffScottBrown 非常感谢。我将所有依赖项更改为 1.0.0.RC1,它终于工作了。
  • 为什么要在 1.0.0 发布 7 个月后从 1.0.0.M1 更新到 1.0.0.RC1?目前没有充分的理由使用RC
  • @JeffScottBrown 我没有将 mavenCentral() repo 添加为依赖项,因此只能为每个依赖项找到最新的 1.0.0.RC2。现在我得到了最新的依赖项作为 1.1.0 并且运行良好。再次感谢。

标签: java grails consul micronaut


【解决方案1】:

在@JeffScottBrown 的帮助下,我的解决方法变得很简单,只需将每个依赖版本更改如下:

添加 mavenCentral() 存储库作为依赖项:

repositories {
    mavenLocal()
    mavenCentral()
    maven { url "https://repo.grails.org/grails/core" }

}

以及所需的 micronaut 依赖项如下:

compile 'io.micronaut:micronaut-inject-java:1.1.0'
compile 'io.micronaut:micronaut-discovery-client:1.1.0'
compile 'io.micronaut:micronaut-spring:1.1.0'
runtime 'io.micronaut:micronaut-runtime:1.1.0'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多