- Connect to SaaS applications
- Connect to files
- Poll resources
- Connect to JMS queues
- Discover and install connectors not bundled with Anypoint Studio
11-1) Connecting to SaaS Applications (Salesforce)
Walkthrough 11-1: Connect to a Saas application (Salesforce)
- Use the Salesforce connector to retrieve accounts for a postal code
- Use the Query Builder to write a query
Image: Add Saleforce connector to canvas and Salesforce libraries get added too (also added to POM file in Maven)
Many operations are available with the Salesforce connector.
11-2) The File Connector
Gives Mule applications the ability to read/write files in the local file system:
- Read input files
- Create new files
- Copy (backup) files
- Append to existing files
- Read periodically and delete/move/leave once processed
By default it uses streaming:
- Payload is a FileInputStream
- Streams are closed by transformers reading the input stream
Can turn off streaming:
- Payload is a byte array
- Not required (standalone)
- Use for reusability and setting properties
File connector as outbound endpoint:
- Passes files to the connected file system
- File name can be set at runtime
Walkthrough 11-2: Connect to a file (CSV)
- Add and configure a File endpoint to watch an input directory, read the contents of any added files, and then rename and move the files
- Use DataWeave to convert a CSV file to a string
- Add a CSV file to the input directory and watch it renamed and moved
- Restrict the type of file read
- Add payload metadata to a file endpoint
We have an input and output folder under:
Image: Configuring the File connector
Use regex to search for just CSV say.
Use ‘Move to Pattern’ to rename with say .backup.
11-3) Polling Resources
Some connectors use or can use a polling process to actively retrieve messages e.g. File, FTP, SMTP.
For other message processors, use a Poll scope element to actively call a resource at regular intervals.
Image: Polling Information (Frequency is milliseconds)
Use a watermark to only retrieve newly created or updated data.
- The value must persist across flows:
--- Mule uses a build-in object store for persistent storage and exposes the value as a flow variable
----- Saved to file for embedded Mule and standalone Mule runtime
----- Saved to data storage for CloudHub
----- Saved to shared distributed memory for clustered Mule runtimes
Walkthrough 11-3: Poll a resource
- Create a flow with a Poll scope as the message source
- Poll a database every 5 seconds for records with a specific postal code
- Use a poll watermark to track the ID of the latest record retrieved
- Use the watermark to only retrieve new records with that postal code
Image: Configuring Poll Scope and Watermark
Image: Configuring pollDatabaseFlow
Image: Prompting to clear the watermark
11-4) Connecting to JMS (Java Messaging Service) Queues
JMS is an API for enabling applications to communicate through the exchange of messages, it provides a standard interface for creating/sending/receiving messages. Supports two messaging models:
1) Queues: PTP (point-to-point)
One-to-one! A sender delivers messages to a queue and a single receiver pulls the message off. The receiver does not need to be listening at the time the message is sent.
2) Topics: Pub-Sub (publish/subscribe)
One-to-many! A publisher sends a message to a topic and all active subscribers of the topic receive the message. Subscribers not actively listening will miss the published message (unless messages are made durable).
The Mule JMS connector can connect to any JMS messaging service that implements JMS spec.
Supported JMS providers:
- Out-of-the-box support for ActiveMQ and WebLogic JMS.
- Others (see the documentation) are supported by a generic JMS or custom JMS configuration.
Walkthrough 11-4: Connect to a JMS queue (ActiveMQ)
- Create a flow accessible at ‘http://localhost:8081/jms’
- Add and configure an Active MQ connector
- Use a JMS endpoint to retrieve messages from a JMS topic
- Add messages to the topic using a web form
- Use a JMS endpoint to send messages to a JMS topic
Image: Connect to a JMS queue
General recommendation: do not use the ALL jar library; use just what you need in your application (to avoid bloat).
Image: Configuration of JMS connectors
Configuration of Logger: message: #[payload]
Configuration of Set Payload: value:
#[message.InboundProperties.’http.query.params’.name] : [message.InboundProperties.’http.query.params’.messageBody]
Image: Using the Mule JMS HTTP app in Postman
11-5) Discovering and using additional connectors
11-6) Introducing Anypoint Connector DevKit for creating custom connectors
You can create custom connectors with Anypoint Studio and Anypoint Connector DevKit.
Note: Use Maven for development and building.