Contenu connexe
Similaire à Integration & DSL
Similaire à Integration & DSL (20)
Plus de Alexandre Porcelli
Plus de Alexandre Porcelli (20)
Integration & DSL
- 2. @porcelli
Alexandre Porcelli
Founder
Alexandre Porcelli
Writer
Alexandre Porcelli
Organizer
Alexandre Porcelli
Commiter / Parser Developer
Alexandre Porcelli
API Designer / Developer
- 12. #facts
✓ #1 OPEN SOURCE ESB
✓ OVER 1.5 MILLION DOWNLOADS
✓ 2500+ PRODUCTION DEPLOYMENTS
✓ PERFORMANCE: 10000 TPS
✓ SCALABLE: 13000 DEPLOYED SERVERS
✓ 100+ CONNECTORS APPS & PROTOCOLS
✓ CLOUD CONNECTORS
- 13. enterprise...
Mule ESB Mule ESB
Community Enterprise
High-performance ESB
Access to source code
Community extensions
Management Console
High availability
Premium Connectors
Self-healing connections
Technical Support
Knowledge Base
Service packs / hot patches
QA
Enterprise documentation
Enterprise license
- 18. POJO!
@Connector(namespacePrefix="my-push")
public class MyPushCloudConnector {
/**
* Hostname of My Push Notification Gateway
*/
@Property
private String host;
@Operation
public void send(String deviceToken, @Parameter(optional=true)
String alert, @Parameter(optional=true) String sound, @Parameter
(optional=true, defaultValue="-1") int badge, @Parameter
(optional=true) Map<String,String> fields) {
...
}
}
- 21. <flow name="Hello World">
<composite-source>
<!-- Incoming HTTP requests -->
<inbound-endpoint address="http://localhost:8888" transformer-refs="HttpRequestToNameString" exchange-pattern="request-response"
<not-filter>
<wildcard-filter pattern="/favicon.ico"/>
</not-filter>
</inbound-endpoint>
<!-- Incoming Servlet requests -->
<inbound-endpoint address="servlet://name" transformer-refs="HttpRequestToNameString" exchange-pattern="request-response">
<not-filter>
<wildcard-filter pattern="/favicon.ico"/>
</not-filter>
</inbound-endpoint>
<!-- Incoming VM requests -->
<vm:inbound-endpoint path="greeter" transformer-refs="StringToNameString" exchange-pattern="request-response"/>
</composite-source>
<component class="org.mule.example.hello.Greeter"/>
<choice>
<when expression="payload instanceof org.mule.example.hello.NameString" evaluator="groovy">
<vm:outbound-endpoint path="chitchatter" exchange-pattern="request-response"/>
</when>
<when expression="payload instanceof java.lang.Exception" evaluator="groovy">
<vm:outbound-endpoint path="userErrorHandler" exchange-pattern="request-response"/>
</when>
</choice>
<!-- Route unexpected errors to separate error handler -->
<default-exception-strategy>
<vm:outbound-endpoint path="systemErrorHandler" exchange-pattern="one-way"/>
</default-exception-strategy>
</flow>
- 26. MuleContex context = Mule.newMuleContext();
Flow myFlow = new Flow();
myFlow.setName("MyFlow");
InboundEndpoint myIn = new GenericInboundEndpoint();
myIn.setURL("file:///Users/porcelli/in");
OutboundEndpoint myOut = new GenericOutboundEndpoint();
myIn.setURL("file:///Users/porcelli/out");
myFlow.setInbound(myIn);
myFlow.addMessageProcessor(myOut);
context.addFlow(myFlow);
ok?
muleContext.start();
- 31. remember?
MuleContex context = Mule.newMuleContext();
Flow myFlow = new Flow();
myFlow.setName("MyFlow");
InboundEndpoint myIn = new GenericInboundEndpoint();
myIn.setURL("file:///Users/porcelli/in");
OutboundEndpoint myOut = new GenericOutboundEndpoint();
myIn.setURL("file:///Users/porcelli/out");
myFlow.setInbound(myIn);
myFlow.addMessageProcessor(myOut);
context.addFlow(myFlow);
muleContext.start();
- 33. cloud...
final TwitterConnector twitterConnector = new TwitterConnector();
twitterConnector.setConsumerKey("key");
twitterConnector.setConsumerSecret("secret");
twitterConnector.setOathToken("token");
Mule.newMuleContext(new AbstractModule() {
@Override
public void configure() {
flow("MyFlow")
.from("file:///Users/porcelli/tweet")
.transformTo(String.class)
.process(twitterConnector.statusesUpdate(payload()));
}
}).start();
- 37. Thanks!
alexandre.porcelli@gmail.com
github.com/porcelli
about.me/porcelli linkedin.com/in/alexandreporcelli
@porcelli
porcelli.com.br