
Identify prerequisites for this course, including Java 8, Mule 4, and JMS basics, and outline the course scope, covered components, and learning objectives.
Explore how to design and implement a Mule custom Activemq module, covering JMS usage, module structure, Maven and Anypoint Studio setup, and publish and consume components.
Explore how to implement an asynchronous background check workflow using Mule JMS module, with applicant.bgc.queue and applicant.bgc.result.queue, using publish, consume and onNewMessage components.
Implement a use case with MuleSoft JMS publish component by configuring an ActiveMQ broker, JMS module, and HTTP listener to publish to the applicant.bgc.queue and test with Postman.
Create a second mule flow using the jms onNewMessage component to listen to applicant.bgc.queue, invoke BGCCheck, route by validBGC with a choice, log payload, and publish results to applicant.bgc.result.queue.
Build a third flow with an http listener at /applicants and a JMS consume component to fetch BGC status from applicant.bgc.queue, using applicantId as a user property.
Lab to setup environment
Explore Mule module structure by examining modules, components, and the Java and XML Mule SDKs; learn how sources create Mule events and how operations, routers, scopes, and functions process them.
Explore how modules, configurations, and connection providers work together, using parameters to propagate settings like brokerURL and persistent delivery across JMS components.
Explore mule custom connectors by building modules such as custom activemq with publish, consume and onNewMessage, a custom validation with is not blank string, and if-else router with cache scope.
Import a Mule extension project from the file system into Anypoint Studio, update the workspace, and review the project structure, including pom.xml, module configuration, and connection providers with operations.
Create a Mule project directly in Anypoint Studio, customize the pom.xml for a Mule-extension packaging, and begin writing classes in src/main/java to build the custom ActiveMQ extension.
Create an extension project by first using a Maven archetype, then build it directly in Anypoint Studio, following the lab document instructions.
Define and configure parameters in a JMS configuration using a configuration class, including brokerUrl for ActiveMQ, parameter annotations, and UI modifiers like displayName, summary, and example annotations.
Show how to group brokerUrl, username, and password into a connection parameter group, and create consumer and producer groups with their own tabs, including defaults and display names.
Learn how to use showInDSL on the @ParameterGroup to render parameter groups as child elements inside the config element, with attributes like brokerUrl, maximum wait seconds, JMS Type, and priority.
Build the customactivemq project by adding an svg icon in the icon folder, then run mvn clean install to compile and install the jar.
Integrate a custom activemq module into a mule app by updating pom.xml, configuring broker url, and wiring publish and consume operations to queues across ApplicantSubmissionFlow, BGCInitiationFlow, and BGCResultCheck.
Explore the source component in Mule, see how onNewMessage receives JMS messages from ActiveMQ and creates Mule messages that feed the flow, with onStart and onStop lifecycle.
Develop and test the MuleSoft ActiveMQSource by implementing onStart and onStop, returning hello world from a configurable queueName, and building a 1.0.1 ActiveMQ module with Maven.
Import lab projects from the resources CustomSDKprojects.zip into Anypoint Studio by extracting the folder and importing each project from the file system into the workspace.
Understand the lab structure, including project prefixes and solution versus start projects, and how to use maven coordinates and pom.xml for custom activemq workflows.
Add destination and destination type parameters to the consume operation, include optional selector and defaulted maximum wait seconds, and annotate with parameter groups for logging.
Define parameters for the publish operation using destination parameters and PublishParameters, including body, headers like jms type and priority, and optional correlation id and user properties, with logging.
Define parameters in the onNewMessage source using destination parameters and selector, omit maximum wait seconds, wire destinationParameters into onStart, and log the selector.
Update the ActiveMQ project to version 1.0.2, run mvn clean install to build and install the jar, then configure publish/consume destinations applicant.bgc.queue and applicant.bgc.result.queue with payloads.
Change the data type of the body parameter from string to InputStream to accept Json payloads, test with Postman, fix errors, and ensure applicant details are submitted successfully.
Learn how TypedValue captures and exposes media type and encoding from a message. Use DataType to access the MediaType, enabling publish parameters to carry content type information.
Learn to use TypedValue to capture the payload as an InputStream and extract media type and encoding, via PublishParameters and a custom JMS utility, for Mule ActiveMQ operations.
Test typed value behavior by validating user-specified content type and encoding precedence in a Mule app, using Postman and Anypoint Studio logs to verify application/json and UTF-8.
Explore behavior parameters that drive actions and content parameters, including body as primary content, for publish and consume components, with content annotation and dataweave for headers.
Configure content parameters in the publish component by moving body parameters from attributes to a cdata child text element in the configuration xml.
Use ConfigOverride to annotate producer and consumer config parameters in ActiveMQ integration, map ProducerConfigParameters and ConsumerConfigParameters to UI tabs, and set defaults in config parameter classes.
Test config override behavior with ConfigOverride across ActiveMQSource, ConsumeParameters, and PublishParameters, verifying priority precedence and a default of 5 from ProducerConfigParameters.
Add the Active MQ client library to a Mule custom connector by using the ExternaLib annotation and a Maven dependency with provided scope in the pom.xml.
Get a high-level overview of JMS in ActiveMQ, including creating a connection, session, and destination (queue or topic) to send or receive messages via producers and consumers.
Explore how to implement a CustomConnectionProvider that creates a CustomConnection to ActiveMQ, and define connect, disconnect, and validate methods under the Mule runtime.
Build a custom connection provider by implementing the ConnectionProvider interface with CustomConnection and CustomConnectionProvider, handling username, password, broker URL, and implementing connect, disconnect, and validate for the ActiveMQ JMS connection.
Create and manage ActiveMQ connections within operations using CustomConnection and CustomConnectionProvider; annotate with Connection to inject and dispose the connection during publish and consume operations.
Learn how to obtain a CustomConnection in a Mule source class using a ConnectionProvider. Create the connection on start and dispose it on stop by calling the disconnect method.
Connect to ActiveMQ using ExternalLib to add the client library; implement CustomConnectionProvider, create CustomConnection in the source component onStart, and pass and annotate CustomConnection as an operation argument.
Learn how to implement a publish operation for an ActiveMQ broker using custom JMS wrapper classes to create a connection, session, destination, producer, and text message, then publish and cleanup.
Learn how custom JMS wrappers publish messages using publish parameters, headers, and properties, with custom sessions, destinations, and producers coordinating queue or topic delivery.
Test the publish component by sending applicant details as json to the ActiveMQ queue and verify messages appear with the producer-level priority and nullsafe initialization.
Test end-to-end with ActiveMQ by publishing to applicant.bgc.queue, triggering BGCInitiationFlow, and validating outputs in applicant.bgc.result.queue as BGC is clear or not clear, via postman.
Demonstrates end-to-end testing of a Mule flow that publishes applicant details to a queue, then retrieves BGC status by applicantId with a filtered consumer.
Publish and consume messages from an ActiveMQ queue by completing the publish, source, and consume operations across the start and solution projects in this lab.
Explore how correlationId provides a unique identifier for every mule event, generated if the source does not set it, enabling traceability across logs and errors.
explain how the correlation id header in a jms message correlates applicant details with bgc status across queues, using a custom value or the mule correlation id, and log it.
Learn to set the correlation ID header for JMS messages in the publish component, using either a user-provided value or an existing correlation ID from Mule API correlation info.
Explore how the consume operation retrieves a JMS message from ActiveMQ, copies headers and properties, and logs the correlationId from the message attributes.
Learn to set and retrieve the correlation ID across publish, source, and consume components by tracing JMS headers end-to-end.
Struggling to understand how MuleSoft custom connectors actually work?
This course helps you build custom connectors from scratch using a simple, practical approach—by first creating a familiar JMS-style module and then applying the same concepts to your own use cases.
Instead of relying only on existing connectors, you’ll learn how to design and build your own components for real project needs.
**What you’ll be able to do**
By the end of this course, you will be able to:
Build MuleSoft custom connectors using Java SDK
Create your own connectors for legacy systems or specific business needs
Understand how MuleSoft components work internally
Confidently move beyond basic MuleSoft usage
**Why this course is different**
Most courses explain concepts.
This course shows you how to actually build.
You’ll learn by creating:
A Mini JMS-style module
isNotBlankString validator
IfElse router
Custom cache scope
This approach makes learning easier because you apply concepts step-by-step in a structured way.
**Who this is for**
MuleSoft developers who want to build custom connectors
Integration/API developers working with MuleSoft
Developers with basic MuleSoft knowledge looking for hands-on experience
Anyone who finds custom connectors confusing and wants a clear approach
**Prerequisites**
Basic knowledge of Mule 4
Basic Java (Java 8) and functional programming
**What you’ll cover**
Creating custom components: operations, source, validator, router, scope
Building real-world inspired components:
JMS-style module
isNotBlankString validator
IfElse router
Understanding module structure and extension projects
Creating publish & consume operations
Working with ActiveMQ
Handling parameters, errors, and correlation IDs
Using custom components in applications
**Environment Setup**
Java 8
Apache Maven
Apache ActiveMQ
Anypoint Studio