我正在尝试将来自Activiti Camel任务的消息发送到ActiveMQ队列,该队列应该在Camel收到活动时恢复活动。据我所知,当从队列接收到消息时,缺少使Camel能够识别它的属性,以便路由到正确的活动任务。
因此引发了UPDATE caduti
SET foto_ok=foto
FROM (
SELECT *
FROM caduti
GROUP BY foto
HAVING count(foto) = 1
)
异常并且路由失败。
Business key is Null
正如预期的那样,如果我对接收路由中的from("activiti:SampleProcess:myCamelTask")
.to("activemq:queue:myQueue");
或PROCESS_ID_PROPERTY
进行硬编码,则会正确路由消息(当ID匹配时)。
PROCESS_KEY_PROPERTY
如何在接收路线中获取任何属性,以便我可以相应地设置它们?
或者是否有更推荐的方法来解决这个问题?
答案 0 :(得分:0)
一个好问题。 我处理这个的方法是使用setProperty()命令在路径中注入PROCESS_KEY:
请参阅下文,我将流程密钥(业务密钥)设置为“bar”:
from(startProcessEndpoint)
.log(LoggingLevel.INFO, logMsg3)
.setProperty("PROCESS_KEY_PROPERTY",foo)
.setBody(constant("bar"))
.to("activiti:testCamelTask:receive")
现在,如果您不想使用常量,那么您可以访问路径中的交换对象,并可以使用表达式,如下所示:
Expression foo = new Expression() {
@Override
public <T> T evaluate(Exchange exchange, Class<T> aClass) {
return (T) "foo";
}
};
希望这有帮助, 格雷格