camel使用了哪种企业集成模式

Which Enterprise Integration pattern is used in camel

我正在使用 Apache camel 路由来处理我的 message.In 我的用户界面我需要显示这些消息,在详细页面中我需要显示路由内的消息流 所以我计划使用拦截,以便在输入每个模式之前,消息将被拦截,处理器将在那里存储它 DB.But 我面临一个问题,即找出最后处理消息的模式。 比如拦截是发生在聚合、拆分还是 process.After 我的拦截处理器工作的模式之后。 如果有任何其他方法可以完全满足我在数据库中存储路由详细信息的需要,是否有任何方法可以找出这个或它是否可以。 请帮忙 这种图表是我需要从路线创建的。 提前致谢。

I am facing an issue in finding out which pattern processed the message lastly. Like whether the intercept happened after an aggregate,split or process.After which pattern my intercept processor worked. Is there any way to find out this?

您可以从 CamelMessageHistory 交换 属性 中获取一些详细信息,这是 DefaultMessageHistory objects 的列表。这些包含 routeId 和一些关于端点节点的细节,比如它的 id。如果您使用 interceptFrom camel 将拦截的端点 uri 存储到 CamelInterceptedEndpoint header.

拦截并打印历史记录

intercept()
    .process(new Processor(){

        @Override
        public void process(Exchange exchange) throws Exception {
        
            String output = "History:\n";
            List historyList = (List)exchange.getProperty(Exchange.MESSAGE_HISTORY);
            
            for (int i = 0; i < historyList.size(); i++) {
                
                DefaultMessageHistory messageHistory = (DefaultMessageHistory)historyList.get(i);

                output += "\t[" + (i + 1) + "]" 
                    + messageHistory.getRouteId() +":" 
                    + messageHistory.getNode().getShortName()
                    + "\n";
            }
            System.out.println(output);
        }
    });

然而,这不会对您有多大帮助,因为信息相当有限,而且许多模式(如 split)会创建具有自己的新历史的新交换。但是,对于这些,您可以查看是否已设置 header 之类的 CamelSplitIndex,以及是否已经确定是否发生了拆分。

if there is any other way to full fill my need to store the details of routing in DB

您可以让事情变得简单,而是使用事件来跟踪交换的状态。只需编写一个处理器或组件,您就可以使用它来 write/store 路由期间发生的事情和时间。您可以使用 breadcrumbId 作为交换的唯一 ID,因为即使在像 split 这样的事情之后,它仍然存在。

处理器或自定义组件然后可以简单地将这些事件流式传输到某个文件或将它们存储到本地数据库(如 sqlite)以供进一步处理。避免将它们直接发送到外部数据库或服务,以尽量减少对实际路由的影响。

This kind of diagram is what I need to create from the routes. Thanks in Advance.

您是否查看过 Hawtio? It does a lot of this already. I am running Hawtio with Apache Karaf and it provides me with Route diagrams and fairly detailed profiling data for routes, endpoints and whatnot. Its also open source 以便您可以对其进行修改或将其用作您自己的应用程序的参考。

如果您喜欢自己做类似的事情,您可以考虑使用 JMX 来管理和监视 camel 应用程序。据我了解,Hawtio 在幕后使用它来获取有关 JVM 内部应用程序的更多信息运行。