Tuesday, August 01, 2017

2017-08-01 Tuesday - MuleSoft Performance & Best Practices

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 

No comments: