所以,我有一个驼峰上下文,DeadLetterChannel在上下文级别没有重新传递.在上下文中我有一条路线:
from("direct:input")
.routeId("enrichHeader")
.setHeader("myHeader").constant("someValue)
.to("direct:output");
Run Code Online (Sandbox Code Playgroud)
我有一个单元测试,我在其中interceptSendToEndpoint("direct:output")引发异常.
然后在单元测试中我做producerTemplate.sendBody(theBody).
现在,正如上面在异常时配置的那样,消息被发送到死信通道.一切都很好.但是,如果我配置一个loggingErrorHandler我得到奇怪的行为.所以,如果我更新上述路线如下:
from("direct:input")
.routeId("enrichHeader")
.errorHandler(
loggingErrorHandler("com.myco.myproject")
.level(LoggingLevel.WARN))
.setHeader("myHeader").constant("someValue)
.to("direct:output");
Run Code Online (Sandbox Code Playgroud)
当我运行测试时,我得到两个意外的行为.首先,异常仍然记录在级别ERROR而不是已配置WARN.其次,异常会传播回producerTemplate.sendBody(theBody)invokation.
一方面,登录ERROR显然是奇怪的.看似奇怪的另一部分是处理程序正在传播异常.我原以为它会把它标记为已处理并完成它.
这是预期的行为吗?似乎LoggingErrorHandler缺乏文档.
我有以下代码:
List<Pattern> patterns = Lists.newArrayList(Pattern.compile("blah"), Pattern.compile("blah2"));
Map<Pattern, String> map = new HashMap<Patter, String>();
map.put(patterns.get(0), "1");
map.put(patterns.get(1), "2");
Assert.assertTrue(map.containsKey(patterns.get(0)));
Run Code Online (Sandbox Code Playgroud)
断言失败了!
为什么会这样?首先,我很惊讶该Pattern课程没有实现equals并hashCode基于模式.但即使它没有,也不Object使用内存地址hashCode,equals所以只要我传递相同的Object实例,就应该找到密钥?
编辑:对不起伙计.这是我实际拥有的.忘记transform每次访问完成后都会创建一个新实例.
List<Pattern> patterns = Lists.transform(Lists.newArrayList("blah1", "blah2"), toPattern);
Run Code Online (Sandbox Code Playgroud) 我正在开发一个成功使用以下项目来检索系统属性的项目.
<property name="blah" value="@some.system.property@"/>
Run Code Online (Sandbox Code Playgroud)
这看起来可能是使用带有前缀和后缀的自定义属性占位符,@但我在上下文中找不到一个.我搜索了SPEL参考,但没有看到引用的语法.
这是内置于Spring的东西,如果是这样的话,参考是什么?
我正在寻找一个好方法,建立一个有限的链表.如果链接列表为"full",则将删除第一个元素,并添加新元素.所以我总是拥有"最新"的"极限大小"元素.
这是通过以下方式实现的:
private int maxSize;
public LimitedLinkedList(int maxSize) {
this.maxSize = maxSize;
}
@Override
public synchronized boolean add(E object) {
boolean success = super.add(object);
while (this.size() >= maxSize) {
removeFirst();
}
return success;
}
Run Code Online (Sandbox Code Playgroud)
现在我有以下问题:我需要计算链表的平均值.这是我随机获取并发修改异常或索引越界异常的时刻.我的平均方法:
public synchronized static double movingAverage(
LinkedList<AverageObject> valueList) {
if (valueList.isEmpty()) {
return 0;
}
double sum = 0;
int m = 0;
for (int i = 0; i < valueList.size(); i++) {
AverageObject object= valueList.get(i);
sum += object.value;
m++;
}
sum = (m != 0) …Run Code Online (Sandbox Code Playgroud) java ×4
apache-camel ×1
concurrency ×1
hashcode ×1
hashmap ×1
linked-list ×1
spring ×1
summary ×1