我已经在Java DSL中编写了一个集成流
我正在丰富消息的标题,使其包含一个原子整数:
.enrichHeaders(t -> t.headerFunction(pollTime,message -> new AtomicInteger()))
如果我在同一个流中的后续handle方法上放置断点,我可以看到标头,它是一个字符串,而不是原子整数。
因此,如果我尝试在另一个流中检索它,例如,我会得到一个非法参数异常:
message.getHeaders().get(pollTime,AtomicInteger.class).getAndAdd(delay);
Caused by: java.lang.IllegalArgumentException: Incorrect type specified for header 'pollTime'. Expected [class java.util.concurrent.atomic.AtomicInteger] but actual type is [class java.lang.String]
如果我在Kotlin DSL中做同样的事情,一切都很好:
enrichHeaders {
headerFunction<Any>(pollCount) {
AtomicInteger()
}
}
有人知道我做错了什么吗?
我创建了一个独立项目来复制错误,并将其作为预期的原子整数添加到标题中。
然后我调试了我们的主应用程序,结果发现有一个OpenTracingChannelInterceptor,它将所有头文件重新写入字符串。
这个图书馆是罪魁祸首:
io.opentracing.contrib:opentracing-spring-消息传递:0.0.5
这是io.opentracing.contrib的传递依赖:opentracing-spring-cloud d-starter-jaeger
看起来添加这个库只会破坏Spring集成。
修复方法是排除跟踪自动配置:
@SpringBootApplication(排除={OpenTracingChannelInterceptorAutoConfiguration.class})
更新:
opentracing库现在维护时间更长了,因此长期的解决方案是迁移到另一个跟踪库,希望它不会有相同类型的问题。
看见
https://www.cncf.io/blog/2022/01/31/cncf-archives-the-opentracing-project/
问题内容: 我有一个元素定义为 我想读取此元素中的文本,即“ ABC”,但这样做是:var client = page.clientRowName.getText(); 返回一个对象而不是一个字符串。还有什么其他方法可以获取元素的文本 问题答案: 返回一个promise,您需要 解决 它: 或者,如果您只想声明文本,请为您解决承诺: 承诺和“控制流”文档页面应清除所有内容。
我有一个sql select查询,它只从数据库中检索单个列(组)(即),我在对象数组列表中接收上面列表的结果 , 理想情况下,结果应该包含一个对象数组列表,但是当我检查时,结果的第0个索引包含String object而不是object数组。 但是,如果我使用多个列(假设在查询的select子句中有2个列),我可以看到结果的第0个索引作为对象数组,即 即使查询的select子句中只提到一列,如何获
问题内容: 可能重复: JavaScript:检查对象是否为数组? 为什么将对象数组视为对象而不是数组?例如: 问题答案: javascript的怪异行为和规范之一就是Array is 。 您可以通过以下几种方法检查变量是否为数组: 但是最可靠的方法是: 由于您使用jQuery标记了问题,因此可以使用jQuery函数:
我是WS和CXF的初学者。我想使用AsyncHandler创建异步客户端,但无法获得响应消息。 我有使用 CXF wsdl2java 生成的 Web 服务类和接口,如下所示: - 客户类别 和处理程序 调用< code>response.get()时,会出现< code > Java . lang . classcastexception:Java . lang . object无法转换为MyMe
问题内容: 我有一个$ .ajax()请求,其dataType设置为“ json”。服务器返回的JSON具有正确的mime类型“ application / json”。但是,我的jqXHR对象中的responseText始终是字符串。我究竟做错了什么?这是应该如何工作的吗? 这是我拨打电话的方式: 所以我必须做一个才能得到一个实际的对象。这似乎没有必要,因为$ .ajax()应该根据文档自动转换