-
Apache Camel
支持的常用
EIP<
/p>
模式
一、
Camel
支持的企业集成模式
(EIP)
及其文档
?
Messaging
Systems
Message Channel
、
Message
、
Pipes and
Filters
、
Message
Router
、
Message
Translator
、
Message
Endpoint
?
Messaging
Channels
Point to Point
Channel
、
Publish Subscribe
Channel
、
Dead Letter
Channel
、
Guaranteed
Delivery
、
Message
Bus
?
Message Construction
Event
Message
、
Request
Reply
、
Correlation
Identifier
?
Message Routing
Content
Based Router
、
Message
Filter
、
Dynamic
Router
、
Recipient List
、
Splitter
、
Agg
regator
、
Resequencer
、
Composed Message
Processor
、
Scatter-
Gather
、
Routing Slip
、
Throttler
、
Dela
yer
、
Load Balancer
、
Multicast
、
Loop
p>
?
Message Transformation
Content
Enricher
、
Content
Filter
、
Claim Check
、
Normalizer
、
Sort
?
Messaging Endpoints
Messaging
Mapper
、
Event
Driven
Consumer
、
Polling
Consumer
、
Competin
g
Consumers
、
Message
Dispatcher
、
Select
ive
Consumer
、
Durable
Subscriber
、
Idempo
tent
Consumer
、
Tra
nsactional Client
、
Messaging
Gateway
、
Service
Activator
?
System Management
Detour
、
Wire
Tap
二、
Camel
支持的
Apache Ca
mel
常用
EIP
模式
1
、
Message Channel
Camel
在内部通过
Message
Channel
来具体地实现
Endpoint
接口,与
Message
Channel
的任何交互都经由
Messsage
Channel
来完成
2
、
Message
Camel
通过
p>
Message
接口来支持
Message
EIP
。为了支持多种消息交换模式,如事件消
息、应答请求消
息,
Camel
又提供了一个
Exch
ange
接口,该接口有个
pattern
属性,用于设
置消息交换的模式,如
:InOnly
、
InOut
。
3
、
Pipes and Filters
Camel
以多种形式提供对该模式的支持。
使用该模式可以把一个处理过程分到若干
相互
独立的
Endpoint
上完成,
各
Endpoint
以责任链的形式链接为一条
pipeline
。
from(
)
.pipeline(
,
,
,
);
或如下形式(前者的输出为后者的输入):
<
route
>
<
from
uri
=
/>
< br><
pipeline
>
<
bean
ref
=
/>
<
bean
ref
=
/>
<
to
uri
=
/>
< br>
pipeline
>
route
>
< br>在
Camel
中指定多个输出的情况下,
pipeline
是默认的操作模式,因此上例等效于:
<
route
>
<
from
uri
=
/>
<
bean
ref
=
/>
<
bean
ref
=
/>
<
to
uri
=
/>
route
>
4
、
Message Router
使用该模式将输入消息依据某些条件路由到不同的目的地。
5
、
Message Translator
Camel
通过多种形式支持该模式:
?
路由逻辑中的任意的
Processor
?
使用
bean
?
在
DSL
中使用
transform
()
?
使用
Data Format
以不同
的编码封装
(marshal)
或解封
(unmarshal)
消息
使用
bean:
< br>from(
).beanRef(
,
).to(
);
或使用自定义
Processor:
from(
).process(
ne
w
Processor() {
public
void
process(Exchange
exchange) {
Message in = ();
y(y(String.
class
) +
);
}
}).to(
);
使用相关转换方法
from(
).transform(body().append(
)).to(
);
使用
Spring XML
方式配置(
在表达式中可以使用任意
Camel
支持的语言):
<
route
>
<
from
uri
=
/>
< br><
transform
>
<
simple
p>
>
$${} extra data!
<
/p>
simple
>
transform
>
<
to
uri
=
/>
route
>
使用
bean Integration
<
route
>
<
from
uri
=
/>
<
bean
ref
=
<
/p>
method
=
/>
<
to
uri
=
/>
route
>
6
、
Message Endpoint
Camel
通过
Endpoint
接口提供对
< br>MessageEndpoint EIP
的支持
7
、
Point to Point Channel
Camel
通过
SEDA
、
JMS
、
JPA
、
< br>XMPP
组件支持该模式
,
SEDA
:基于
in-VM seda
的消息
JMS:
使用
JMS
Queue
,迎合高性能、集群与负载均衡的要求
JPA
:将数据库作为简单的消息队列
XMPP
:基于
XMPP
的点对点通信,等
8
、
Publish Subscribe Channel
Ca
mel
通过
JMS
、
< br>XMPP
组件支持该模式
,
JMS:
使用
JMS
Topics
,迎合高性能、集群与负载均衡的要求
XMPP
:使用通信室(类似于聊天室)的方式
RouteBuilder builder =
new
RouteBuilder() {
public
void
configure() {
-
-
-
-
-
-
-
-
-
上一篇:缸体机械加工工艺设计
下一篇:电视节目策划方案范文