Integration with MuleIntegration with Mule
Oklahoma City Java UsersOklahoma City Java Users
GroupGroup
Ryan HoeggRyan Hoegg
ConfluexConfluex
in·te·gra·tionin·te·gra·tion
 in-t - gr -sh nˌ ə ˈ ā ə in-t - gr -sh nˌ ə ˈ ā ə
 in-t - gr -sh nˌ ə ˈ ā ə in-t - gr -sh nˌ ə ˈ ā ə
““...the task of making separate applications...the task of making separate applications
work together to produce a unified set ofwork together to produce a unified set of
functionality”functionality”
http://www.eaipatterns.com/IntegrationStylesIntro.htmlhttp://www.eaipatterns.com/IntegrationStylesIntro.html
How to do it:How to do it:
Exchange filesExchange files
Exchange filesExchange files
How to do it:How to do it:
Share a databaseShare a database
Share a databaseShare a database
How to do it:How to do it:
Call programs remotelyCall programs remotely
Call programs remotelyCall programs remotely
How to do it:How to do it:
Send messagesSend messages
Send messagesSend messages
mes·sagemes·sage
 me-sijˈ me-sijˈ
 me-sijˈ me-sijˈ
““a bounded package of information thata bounded package of information that
(can be/has been/is) in the process of(can be/has been/is) in the process of
being delivered from a sender to abeing delivered from a sender to a
recipient”recipient”
http://c2.com/cgi/wiki?MessageDefinitionhttp://c2.com/cgi/wiki?MessageDefinition
org.mule.api.org.mule.api.MuleMessageMuleMessage
Payload: contents, or body of thePayload: contents, or body of the
messagemessage
Properties: key/value pairs, messageProperties: key/value pairs, message
metadatametadata
no, this slide doesn’t mention attachmentsno, this slide doesn’t mention attachments
flowflow
 fl ˈ ō fl ˈ ō
 fl ˈ ō fl ˈ ō
The primary unit of a mule applicationThe primary unit of a mule application
Flow Building BlocksFlow Building Blocks
Message SourceMessage Source
Inbound EndpointsInbound Endpoints
PollsPolls
CustomCustom
Flow Building BlocksFlow Building Blocks
Message ProcessorsMessage Processors
TransformerTransformer
FilterFilter
RouterRouter
ComponentComponent
CustomCustom
TransportTransport
Provides connectors that allow Mule to sendProvides connectors that allow Mule to send
and receive messages using a particularand receive messages using a particular
technologytechnology
•HTTPHTTP
•FileFile
•FTPFTP
•JMSJMS
•SMTPSMTP
•IMAPIMAP
•VMVM
•TCPTCP
•JDBCJDBC
•RMIRMI
•XMPPXMPP
ExamplesExamples
Cloud ConnectorCloud Connector
Bundle of mule extensions for specific SaaSBundle of mule extensions for specific SaaS•TwitterTwitter
•Amazon S3Amazon S3
•FacebookFacebook
• Google ContactsGoogle Contacts
•Apple PushApple Push
•JIRAJIRA
•MS DynamicsMS Dynamics
•PaypalPaypal
•TwilioTwilio
•LinkedInLinkedIn
•AlfrescoAlfresco
ExamplesExamples
Example code:Example code:
http://www.confluex.com/blog/mule-example-imperial-manufacturing/http://www.confluex.com/blog/mule-example-imperial-manufacturing/
Who is this guy talking?Who is this guy talking?
@rhoegg@rhoegg
+Ryan Hoegg+Ryan Hoegg
ryan.hoegg@gmail.comryan.hoegg@gmail.com
rhoegg@confluex.comrhoegg@confluex.com

Integration with Mule

  • 1.
    Integration with MuleIntegrationwith Mule Oklahoma City Java UsersOklahoma City Java Users GroupGroup Ryan HoeggRyan Hoegg ConfluexConfluex
  • 2.
    in·te·gra·tionin·te·gra·tion in-t -gr -sh nˌ ə ˈ ā ə in-t - gr -sh nˌ ə ˈ ā ə in-t - gr -sh nˌ ə ˈ ā ə in-t - gr -sh nˌ ə ˈ ā ə ““...the task of making separate applications...the task of making separate applications work together to produce a unified set ofwork together to produce a unified set of functionality”functionality” http://www.eaipatterns.com/IntegrationStylesIntro.htmlhttp://www.eaipatterns.com/IntegrationStylesIntro.html
  • 3.
    How to doit:How to do it: Exchange filesExchange files Exchange filesExchange files
  • 4.
    How to doit:How to do it: Share a databaseShare a database Share a databaseShare a database
  • 5.
    How to doit:How to do it: Call programs remotelyCall programs remotely Call programs remotelyCall programs remotely
  • 6.
    How to doit:How to do it: Send messagesSend messages Send messagesSend messages
  • 7.
    mes·sagemes·sage me-sijˈ me-sijˈ me-sijˈ me-sijˈ ““a bounded package of information thata bounded package of information that (can be/has been/is) in the process of(can be/has been/is) in the process of being delivered from a sender to abeing delivered from a sender to a recipient”recipient” http://c2.com/cgi/wiki?MessageDefinitionhttp://c2.com/cgi/wiki?MessageDefinition
  • 8.
    org.mule.api.org.mule.api.MuleMessageMuleMessage Payload: contents, orbody of thePayload: contents, or body of the messagemessage Properties: key/value pairs, messageProperties: key/value pairs, message metadatametadata no, this slide doesn’t mention attachmentsno, this slide doesn’t mention attachments
  • 9.
    flowflow fl ˈō fl ˈ ō fl ˈ ō fl ˈ ō The primary unit of a mule applicationThe primary unit of a mule application
  • 10.
    Flow Building BlocksFlowBuilding Blocks Message SourceMessage Source Inbound EndpointsInbound Endpoints PollsPolls CustomCustom
  • 11.
    Flow Building BlocksFlowBuilding Blocks Message ProcessorsMessage Processors TransformerTransformer FilterFilter RouterRouter ComponentComponent CustomCustom
  • 12.
    TransportTransport Provides connectors thatallow Mule to sendProvides connectors that allow Mule to send and receive messages using a particularand receive messages using a particular technologytechnology •HTTPHTTP •FileFile •FTPFTP •JMSJMS •SMTPSMTP •IMAPIMAP •VMVM •TCPTCP •JDBCJDBC •RMIRMI •XMPPXMPP ExamplesExamples
  • 13.
    Cloud ConnectorCloud Connector Bundleof mule extensions for specific SaaSBundle of mule extensions for specific SaaS•TwitterTwitter •Amazon S3Amazon S3 •FacebookFacebook • Google ContactsGoogle Contacts •Apple PushApple Push •JIRAJIRA •MS DynamicsMS Dynamics •PaypalPaypal •TwilioTwilio •LinkedInLinkedIn •AlfrescoAlfresco ExamplesExamples
  • 14.
    Example code:Example code: http://www.confluex.com/blog/mule-example-imperial-manufacturing/http://www.confluex.com/blog/mule-example-imperial-manufacturing/ Whois this guy talking?Who is this guy talking? @rhoegg@rhoegg +Ryan Hoegg+Ryan Hoegg ryan.hoegg@gmail.comryan.hoegg@gmail.com rhoegg@confluex.comrhoegg@confluex.com

Editor's Notes

  • #3 in-house/bought different machines, platforms, places run by us, run by others possible/practical to change
  • #11 Inbound Endpoints - Receive new messages from a channel or resource by using a server socket, polling a remote server, or registering a listener
  • #12 Routers control message flow - resequence, split, aggregate, or route