所以,最近我开始学习骆驼。作为该过程的一部分,我决定浏览所有示例(在此处列出,当您下载包含所有示例和文档的软件包时可用)并看看我能学到什么。
其中一个示例,使用 Mina 进行负载平衡引起了我的注意,因为它在不同的 JVM 中使用了 Mina,并且它通过循环模拟了负载平衡器。
我对这个例子有一些问题。首先它使用 Spring DSL,而不是我的项目使用的 Java DSL,我发现它现在更容易理解(主要也是因为我习惯了它)。所以第一个问题:这个示例的版本是否仅使用 Java DSL 而不是 Spring DSL 用于路由和 bean?
我的第二个问题与代码有关。描述指出,我引用:
在此演示中,每隔十秒,就会从 Camel 负载平衡器服务器创建一个报告对象。这个对象由 Camel 负载平衡器发送到 MINA 服务器,然后在该服务器上对对象进行序列化。两个 MINA 服务器之一(localhost:9991 和 localhost:9992)接收对象并通过设置 Report 对象的字段回复来丰富消息。MINA 服务器将回复发送回客户端,然后客户端将回复记录在控制台上。
因此,根据我的阅读,我了解到 MINA 服务器 1(每个示例)从负载均衡器接收报告,对其进行更改,然后将该报告发送回某个不可见的客户端。检查代码后,我看不到客户端 java 类或 XML,当我运行时,服务器只是在命令行上发布结果。客户在哪里??这个客户是什么?
这里展示的 MINA-1 服务器代码:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:camel="http://camel.apache.org/schema/spring"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
<bean id="service" class="org.apache.camel.example.service.Reporting"/>
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route id="mina1">
<from uri="mina:tcp://localhost:9991"/>
<setHeader headerName="minaServer">
<constant>localhost:9991</constant>
</setHeader>
<bean ref="service" method="updateReport"/>
</route>
</camelContext>
</beans>
我不明白该updateReport()
方法如何在我的控制台上神奇地打印对象。如果我想向第三个 MINA 服务器发送消息怎么办?我该怎么做?(我必须添加一个新路由,并将其发送到第三台服务器的 URI 对吗?)
我知道这些问题中的大多数可能听起来很愚蠢,但如果有人能帮助我,我将不胜感激。一个 Java DSL 版本真的会帮助我。