我想根據bean輸入調用不同的服務。但我的實例服務沒有被調用。請看以下代碼:駱駝過濾器 - 使用代理調用不同的豆
我的路線
from("jms:queue:instance").filter()
.method(instanceTypeFilter, "isMCUInstance")
.to("instanceservice").filter()
.method(instanceTypeFilter, "isDMAInstance")
.to("instanceservice").filter()
.method(instanceTypeFilter, "isWSPInstance")
.to("instanceservice").filter()
.method(instanceTypeFilter, "isMEAInstance")
.to("instanceservice").filter()
.method(instanceTypeFilter, "isRSSInstance")
.to("instanceservice");
以下方法卻愈來愈調用
public class InstanceTypeFilter {
public boolean isMCUInstance(Instance instance) {
System.out.println("Entering : InstanceTypeFilter : isMCUInstance");
System.out.println("instance.getType() : " + instance.getType());
return instance.getType() == "MCU";
......................
}
但下面的代碼是沒有得到調用
Service(value = "instanceservice")
public class InstanceServiceImpl implements InstanceService {
public Instance add(final Instance instance) {
System.out.println("Entering : InstanceServiceImpl : add");
instance.setId("newId");
instance.setName("newName");
instance.setType("newType");
System.out.println("Exiting : InstanceServiceImpl : add");
return instance;
}
}
我是一個bigginner駱駝,至於據我瞭解,添加方法應該得到執行。我使用代理和Spring遠程調用來調用add方法。
我試圖像下面,但仍然問題仍然存在
.when(method(InstanceTypeFilter.class, "isMCUInstance")
.isEqualTo(true))
.to("instanceservice")
.when(method(InstanceTypeFilter.class, "isDMAInstance")
.isEqualTo(true))
.to("instanceservice")
.when(method(InstanceTypeFilter.class, "isWSPInstance")
.isEqualTo(true))
.to("instanceservice")
.when(method(InstanceTypeFilter.class, "isMEAInstance")
.isEqualTo(true))
.to("instanceservice")
.when(method(InstanceTypeFilter.class, "isRSSInstance")
.isEqualTo(true)).to("instanceservice");
它沒有被調用,因爲你的過濾器正在過濾它!這就是過濾器的設計目的。克勞斯的答案描述瞭如何在'()'...'end()'時使用'choice()'。 – vikingsteve