This posting is a placeholder for interesting information I happen to come across that is related to the topic of MuleSoft Performance & Best Practices. Hopefully, others may find this of some use.
https://docs.mulesoft.com/mule-user-guide/v/3.8/reliability-patterns
- “Note that VM file persistency is disabled on
clusters, so VM endpoints persist in-memory in a clustered
topology.”
- “because we are calling a transformer, we have to
allow for the possibility that it might fail and throw an
exception. If it does, the file will be reprocessed, and might
throw the same exception, and so on. To avoid an infinite loop, we
used the redelivery policy configured at 2…”
- “Reliability has performance implications”
- “If the outbound transport in the reliable
acquisition flow is not transactional (for example, a flow from
file-to-FTP), the only way to ensure message delivery is to turn
off threading on the respective connector… If threading is not
turned off, the caller may not notice the exception. That’s
because the exception occurred in a different thread, and there is
no way that one thread can see exceptions that occur in another
thread.”
https://docs.mulesoft.com/mule-user-guide/v/3.8/tuning-performance
- “Incorrect combinations of thread configurations
and maxBufferSize values can cause timeouts with no apparent
cause.
Counter
intuitively, this issue is more probable with lower loads that
don’t fully fill the buffer queue. This can cause
outages. Load tests with high and low loads should be used to find
and validate appropriate configurations.”
https://docs.mulesoft.com/mule-user-guide/v/3.8/distributed-file-polling
https://docs.mulesoft.com/mule-user-guide/v/3.8/file-transport-reference
https://docs.mulesoft.com/mule-user-guide/v/3.8/file-connector
- “The File connector only supports working with files on the same
physical system than the running application. It doesn’t transfer
files remotely over network connections. The only exception is
when the operating system maps remote connections to local
directories transparently”
https://docs.mulesoft.com/mule-user-guide/v/3.8/ftp-transport-reference
- “Put your login credentials in a properties file,
not hard-coded in the configuration. This also allows you to use
different settings between development, test, and production
systems.”
- “The FTP transport does not support transactions
as the File Transfer Protocol itself is not transactional. Instead
you should design compensating transactions into your architecture
using exception strategies in Mule”
- “If streaming is
not enabled on the FTP connector, Mule attempts to read a
file it picks up from the FTP server into a byte[] to be used as
the payload of the MuleMessage.
This behavior
can cause trouble if large files need to be processed.”
https://docs.mulesoft.com/mule-user-guide/v/3.8/ftp-connector
https://docs.mulesoft.com/mule-user-guide/v/3.8/sftp-transport-reference
- “Mule 3.7 and newer supports SFTP
retries. “
https://docs.mulesoft.com/mule-user-guide/v/3.8/sftp-connector
- “Mule uses the JCraft library for SFTP SSH”
- “SFTP Inbound Endpoints can only be set to a
one-way exchange pattern. SFTP Outbound Endpoints can be set to
either a one-way or request-response exchange pattern”
https://docs.mulesoft.com/mule-user-guide/v/3.8/configuring-reconnection-strategies
- "In addition to setting reconnection strategies on
most connectors (Ajax, File, and VM are notable exceptions), you
have the option to set them on global endpoints. (Once again, Ajax
represents a major exception, which means that you can’t set a
reconnection strategy on Ajax). However, MuleSoft recommends that
whenever possible, you set your reconnection strategies on global
connectors, rather than global endpoints, because this Best
Practice generally allows you to reuse a once-written reconnection
strategy again and again across all your flows and Mule projects."
- "The only situation in which MuleSoft recommends
configuring a reconnection strategy on a global endpoint(rather
than a global connector) involves Jetty, whose connector doesn’t
support reconnection. This is why MuleSoft recommends the Jetty
global endpoint instead."
http://www.mulesoft.org/docs/site/3.8.0/apidocs/org/mule/transport/file/ExpressionFilenameParser.html
- "ExpressionFilenameParser can use any expression
language supported by Mule to construct a file name for the
current message. Expressions can be xpath, xquery, ognl, mvel,
header, function and more"
https://docs.mulesoft.com/mule-user-guide/v/3.8/exception-strategy-most-common-use-cases
https://docs.mulesoft.com/mule-user-guide/v/3.8/error-handling
- “Mule invokes a Messaging Exception Strategy
whenever an exception is thrown within a flow…”
- “Each flow can contain only one exception
strategy. However this can be a choice exception strategy that
then refers to other nested exception strategies.
- “Choice exception strategies can contain one or
more catch and/or rollback exception strategies. (Rollback and
catch exception strategies cannot, however, contain other
exception strategies.)”
- “Each exception strategy can contain any number of
message processors.”
- “The exception strategy message processors should
not throw exceptions, because you cannot create a nested exception
strategy for these message processors”
- “Mule’s default exception strategy implicitly and
globally handles all messaging exceptions that are thrown in Mule
applications. You can override Mule’s default exception strategy
by adding a catch, rollback, or choice exception strategy to a
flow. Otherwise, when an exception is thrown in a flow, Mule
automatically rolls back any pending transaction and logs the
exception; if no transaction is involved, the default exception
strategy simply logs the exception”
https://docs.mulesoft.com/anypoint-data-gateway/troubleshooting-data-gateway
https://docs.mulesoft.com/anypoint-data-gateway/
- "Anypoint Data Gateway allows you to easily
integrate data stored in legacy back-office systems with
Salesforce."
- "Data Gateway supports integration with systems
such as SAP, Oracle, MS SQL, MySQL, and others"
Discussion Forum Findings…
https://forums.mulesoft.com/index.html
https://stackoverflow.com/search?q=mulesoft
For example:
https://forums.mulesoft.com/questions/68441/mule-performance.html
https://stackoverflow.com/questions/33230947/mule-ftp-polling-stops-without-error-or-warning
Some other interesting articles...
http://www.modusbox.com/2016/01/tuning-mule-esb-for-high-performance-in-etl-scenarios/
https://www.appnovation.com/blog/mule-sftp-and-pgp-encryption
https://dzone.com/articles/performance-tuning-in-mule-esb
https://stackoverflow.com/questions/39009139/pass-input-stream-over-http-in-mule-using-http-connector
https://www.ricston.com/blog/batch-select-mule/
https://github.com/mulesoft/mulesoft-docs/blob/master/release-notes/v/latest/mule-runtime-3.8.0-m1-release-notes.adoc
https://blogs.biztalk360.com/response-mulesoft-blog-10-reasons-walk-biztalk/
https://seekingalpha.com/filing/3543114