Strimzi:MirrorMaker 2.0 连接到 IBM EventStream
Posted
技术标签:
【中文标题】Strimzi:MirrorMaker 2.0 连接到 IBM EventStream【英文标题】:Strimzi: MirrorMaker 2.0 connecting to IBM EventStream 【发布时间】:2020-06-21 15:25:26 【问题描述】:我已经使用 Strimzi 在 Kubernetes 上配置了 Kafka。我尝试通过 MM2 将 Kafka 与 IBM EventStream 连接,但出现错误..
任何导致问题的消息和主题的想法
2020-03-09 17:25:40,258 错误在对 /connectors/my-cluster-source->my-cluster-target.MirrorSourceConnector/config (org.apache.kafka.connect.runtime. rest.errors.ConnectExceptionMapper) [qtp1584918772-17]
com.fasterxml.jackson.databind.exc.MismatchedInputException:无法从 START_OBJECT 令牌中反序列化 java.lang.String
的实例
在 [来源:(org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream);行:1,列:1335](通过引用链:java.util.LinkedHashMap["targetConnector"])
在 com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59)
在 com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1442)
在 com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1216)
在 com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1126)
在 com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:63)
在 com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:10)
在 com.fasterxml.jackson.databind.deser.std.MapDeserializer._readAndBindStringKeyMap(MapDeserializer.java:527)
在 com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:364)
在 com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:29)
在 com.fasterxml.jackson.databind.ObjectReader._bind(ObjectReader.java:1682)
在 com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:977)
在 com.fasterxml.jackson.jaxrs.base.ProviderBase.readFrom(ProviderBase.java:814)
在 org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.invokeReadFrom(ReaderInterceptorExecutor.java:233)
在 org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.aroundReadFrom(ReaderInterceptorExecutor.java:212)
在 org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:132)
在 org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundReadFrom(MappableExceptionWrapperInterceptor.java:49)
在 org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:132)
在 org.glassfish.jersey.message.internal.MessageBodyFactory.readFrom(MessageBodyFactory.java:1067)
在 org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:850)
在 org.glassfish.jersey.server.ContainerRequest.readEntity(ContainerRequest.java:247)
在 org.glassfish.jersey.server.internal.inject.EntityParamValueParamProvider$EntityValueSupplier.apply(EntityParamValueParamProvider.java:73)
在 org.glassfish.jersey.server.internal.inject.EntityParamValueParamProvider$EntityValueSupplier.apply(EntityParamValueParamProvider.java:56)
在 org.glassfish.jersey.server.spi.internal.ParamValueFactoryWithSource.apply(ParamValueFactoryWithSource.java:50)
在 org.glassfish.jersey.server.spi.internal.ParameterValueHelper.getParameterValues(ParameterValueHelper.java:68)
在 org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$AbstractMethodParamInvoker.getParamValues(JavaResourceMethodDispatcherProvider.java:109)
在 org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176)
在 org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:79)
在 org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:469)
在 org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:391)
在 org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:80)
在 org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:253)
在 org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
在 org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
在 org.glassfish.jersey.internal.Errors.process(Errors.java:292)
在 org.glassfish.jersey.internal.Errors.process(Errors.java:274)
在 org.glassfish.jersey.internal.Errors.process(Errors.java:244)
在 org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)
在 org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:232)
在 org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:679)
在 org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:392)
在 org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)
在 org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:365)
在 org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:318)
在 org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)
在 org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:852)
在 org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:544)
在 org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
在 org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1581)
在 org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
在 org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1307)
在 org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
在 org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:482)
在 org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1549)
在 org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
在 org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1204)
在 org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
在 org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:221)
在 org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:173)
在 org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
在 org.eclipse.jetty.server.Server.handle(Server.java:494)
在 org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:374)
在 org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:268)
在 org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
在 org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
在 org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
在 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:782)
在 org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:918)
在 java.lang.Thread.run(Thread.java:748)
【问题讨论】:
【参考方案1】:从您分享的日志看来,IBM EventStream 似乎无法通过引导路由/入口 url 连接:
org.apache.kafka.connect.runtime.rest.errors.ConnectExceptionMapper
所以我的建议是请检查您在 Kubernetes 上的 Ingress 配置,因为我想您正在尝试访问您的 Kubernetes 集群的 Strimzi 集群,并确保您可以使用 Kafka 控制台消费者/生产者本地生产/消费消息您的本地,在 K8S 中访问您的 Kafka 集群。
如果您使用 https,请务必在路由/入口 url 末尾附加 443(或 8443)端口,并删除您在 IBM EventStream 配置中设置的“https://”作为引导服务器 url。
【讨论】:
以上是关于Strimzi:MirrorMaker 2.0 连接到 IBM EventStream的主要内容,如果未能解决你的问题,请参考以下文章