Mule ESB and maximum flow threads - mule

I went to the following site:
http://www.mulesoft.org/documentation/display/current/Tuning+Performance
and it says to alter the following 2 values:
maxThreadsActive and maxBufferSize
with maxThreadsActive being the number of active threads at anyone time, and maxBufferSize being the number of requests that can wait in a queue
But I am having difficulty finding any examples of how to do this in code.
-- Is there a central Mule ESB file where I can change the default number of maxThreadsActive and maxBufferSize ???
Would this be the dispatcher threading profile. What file would that be ?
--
If there is no central filet, for a synchronous process, how would I change the following code to use a maximum number of active threads to 100 and a maximum number of requests on the queue to 60
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:https="http://www.mulesoft.org/schema/mule/https" xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns:db="http://www.mulesoft.org/schema/mule/db" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.5.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/db http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd
http://www.mulesoft.org/schema/mule/https http://www.mulesoft.org/schema/mule/https/current/mule-https.xsd">
<db:generic-config name="Generic_Database_Configuration" url="jdbc:db2://localhost:50000/TEST:user=instuid;password=instpw;" driverClassName="com.ibm.db2.jcc.DB2Driver" doc:name="Generic Database Configuration"/>
<http:endpoint exchange-pattern="request-response" host="localhost" port="8081" method="POST" name="HTTP" doc:name="HTTP"/>
<flow name="test1Flow1" doc:name="test1Flow1">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" doc:name="HTTP" contentType="application/json" keepAlive="true" mimeType="application/json"/>
<echo-component doc:name="Echo"/>
</flow>
</mule>
Thanks

You can used a queued-asynchronous processing strategy in you flow. With this approach you can change the number of threads available to the flow.
For Example:
<queued-thread-per-processor-processing-strategy name="ProcessingStrategy" maxThreads="60" minThreads="10" threadTTL="5000" poolExhaustedAction="WAIT" threadWaitTimeout="5000" maxBufferSize="100"/>
<flow name="test1Flow1" doc:name="test1Flow1" processingStrategy="ProcessingStrategy">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" doc:name="HTTP" contentType="application/json" keepAlive="true" mimeType="application/json"/>
<echo-component doc:name="Echo"/>
</flow>
"You can specify a separate threading profile for each receiver thread pool, flow thread pool, and dispatcher thread pool". For example:
<http:connector name="DefaultHTTPConnector" clientSoTimeout="120000" keepSendSocketOpen="false" >
<receiver-threading-profile maxThreadsActive="500"/>
<dispatcher-threading-profile maxThreadsActive="500"/>
</http:connector>
or
<configuration>
<default-receiver-threading-profile maxThreadsActive="130" />
</configuration>
I recommend the first option in the flow.
I hope to help;

You cannot add a flow processing strategy on a request-response exchange pattern

Add a global configuration element as follows:

Related

java.lang.OutOfMemoryError: GC overhead limit exceeded error while connection between mule and snowflake

I am creating a new flow in mule 3.9 using http connector and gerenic data base connector to connect to snowflake to run a procedure.
There are no error in the code,i could see that the codeis running successfully but i am getting
the below error.
java.lang.OutOfMemoryError: GC overhead limit exceeded
I have updated the anypoint.ini file upgraded the memory to 10240 still it didnt work
i am using snowflake jar 3.13.3 for this project
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:db="http://www.mulesoft.org/schema/mule/db" xmlns:json="http://www.mulesoft.org/schema/mule/json" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:cdata-snowflake="http://www.mulesoft.org/schema/mule/cdata-snowflake" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/db http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd
http://www.mulesoft.org/schema/mule/cdata-snowflake http://www.mulesoft.org/schema/mule/cdata-snowflake/current/mule-cdata-snowflake.xsd">
<http:listener-config name="HTTP_Listener_Configuration" host="localhost" port="8081" doc:name="HTTP Listener Configuration"/>
<flow name="testFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/test" allowedMethods="GET" doc:name="HTTP"/>
<db:stored-procedure config-ref="Generic_Database_Configuration" doc:name="Database">
<db:parameterized-query><![CDATA[call E2e_Change_User('nudayaku' ,'tan')]]></db:parameterized-query>
</db:stored-procedure>
<json:object-to-json-transformer doc:name="Object to JSON"/>
</flow>
</mule>
i have tried but parameterized query as well as dynamic way , but both were resulting in timout error.
I have run the same procedure from snowflake , i am getting the output in seconds.
Can some help me how to fix the issue
Appreciate inputs
Thanks,
Sidh
This is a know issue in Mule 3.9.0 to Mule 3.9.4. The solution is to upgrade to Mule 3.9.5.
Source: https://help.mulesoft.com/s/article/Store-procedure-calls-fail-in-mule-3-x-for-snowflake-database

No valid operation is selected by Dropbox connector in mule

I try to create a simple application using Mule. Anyway when I select operation "Authorize" I got error. But if I select another operation it works fine!!
I have Mule Server version="CE-3.8.1" and use Anypoint studio Version: 6.2.5
The Complete XML Configuration:
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:json="http://www.mulesoft.org/schema/mule/json" xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:dropbox="http://www.mulesoft.org/schema/mule/dropbox" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/dropbox http://www.mulesoft.org/schema/mule/dropbox/current/mule-dropbox.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd">
<http:listener-config name="HTTP_Listener_Configuration8881" host="localhost" port="8881" doc:name="HTTP Listener Configuration"/>
<dropbox:config name="Dropbox1" appKey="ovy1i8ak8u43t87" appSecret="7jlhpdzeyddi8d5" doc:name="Dropbox">
<dropbox:oauth-callback-config domain="localhost" localPort="8881" remotePort="8881" path="callback"/>
</dropbox:config>
<http:request-config name="HTTP_Request_Configuration" host="www.mulesoft.com" port="80" doc:name="HTTP Request Configuration"/>
<flow name="dropbox_integration2Flow">
<http:listener config-ref="HTTP_Listener_Configuration8881" path="/authorize" doc:name="HTTP"/>
<dropbox:unauthorize config-ref="Dropbox1" doc:name="Dropbox - authorize"/>
</flow>
<flow name="dropbox_integration2Flow1">
<http:listener config-ref="HTTP_Listener_Configuration8881" path="/" doc:name="HTTP"/>
<dropbox:create-folder config-ref="Dropbox1" path="/mule" doc:name="Dropbox - create"/>
<http:request config-ref="HTTP_Request_Configuration" path="/sites/default/files/3C_mulesoft_logo_updated.svg" method="GET" doc:name="HTTP"/>
<dropbox:upload-stream config-ref="Dropbox1" filename="mulelogo.png" path="/mule" doc:name="Dropbox - upload"/>
<dropbox:get-link config-ref="Dropbox1" path="/mule/mulelogo.png" doc:name="Dropbox - get link"/>
<json:object-to-json-transformer doc:name="Object to JSON"/>
</flow>
</mule>
Is there any reason for this? How to fix it?
It seems to be a bug in the old Mule Dropbox Cloud Connector Mule Studio Extension 3.3.0 (2013). Are you using that one? If you are, I suggest you use the latest available version, Dropbox Connector 3.3.3 (2015), which fixes the error.

How to get Client IP from UDP Transport in Mule ESB?

I'm trying to get the client IP and socket of a UDP package and save it in a Flowvar variable using the MEL code
#[message.inboundProperties.MULE_REMOTE_CLIENT_ADDRESS]
However this variable is always null, I have been able to make it work on TCP transport, does anyone know how to get the remote client address in UDP?
This is my XML file:
<mule xmlns:metadata="http://www.mulesoft.org/schema/mule/metadata" xmlns:udp="http://www.mulesoft.org/schema/mule/udp" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/udp http://www.mulesoft.org/schema/mule/udp/current/mule-udp.xsd
http://www.mulesoft.org/schema/mule/amqp http://www.mulesoft.org/schema/mule/amqp/current/mule-amqp.xsd">
<udp:connector name="UDP" validateConnections="true" keepSendSocketOpen="true" doc:name="UDP" broadcast="true"/>
<flow name="udpFlow">
<udp:inbound-endpoint exchange-pattern="one-way" host="172.22.20.103" port="4040" connector-ref="UDP" responseTimeout="10000" doc:name="UDP" metadata:id="9260547c-3b58-4ebd-953e-fd3e7bb063f3"/>
<object-to-string-transformer doc:name="Object to String"/>
<set-variable variableName="source" value="#[message.inboundProperties.MULE_REMOTE_CLIENT_ADDRESS]" metadata:id="6a72ad72-167f-44da-9f3d-75143c5c0a2f" doc:name="Variable"/>
<set-payload value="#[flowVars.source] dice #[payload]" doc:name="Set Payload"/>
<echo-component doc:name="Echo"/>
</flow>
</mule>
UPDATE:
I solve the Address issue with the MEL code
#[message.inboundProperties['packet.address']]: #[message.inboundProperties['packet.port']]
Thanks to David Dossot for his help.
Use:
#[message.inboundProperties['packet.address']]

amqp ssl connection error

Hi I am trying to create a very simple AMQP connector to talk to my localhost RabbitMQ server using SSL. Without SSL, the connection works fine but I suspect my SSL configuration is incorrect. Can anyone shed light on this? I'm quite a newbie to Mule so apologies if this is ridiculous.
</ssl:connector>
<flow name="here_we_go_againFlow1">
<amqp:inbound-endpoint exchangeName="sales_exchange" queueName="sales_queue" responseTimeout="10000" exchange-pattern="request-response" connector-ref="AMQP_0_9_Connector" doc:name="AMQP-0-9" ref="AMQP_0_9"/>
<ssl:outbound-endpoint host="localhost" port="5671" responseTimeout="10000" doc:name="SSL (TLS)"/>
<echo-component doc:name="Echo"/>
</flow>
I assume you are trying to connect to an AMQP server over SSL. Here is an example using the ampqs transport. Note the namespaces etc.
<mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:amqps="http://www.mulesoft.org/schema/mule/amqps" xmlns:spring="http://www.springframework.org/schema/beans"
xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/amqps http://www.mulesoft.org/schema/mule/amqps/current/mule-amqps.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<amqps:connector name="amqpsDefaultSslConnector" />
<flow name="amqp">
<amqps:inbound-endpoint exchangeName="target-exchange"
exchangeType="fanout" exchangeDurable="true" exchangeAutoDelete="false"
queueName="target-queue" queueDurable="true" queueAutoDelete="false"
queueExclusive="true" routingKey="a.b.c" connector-ref="amqpsDefaultSslConnector" />
....
</flow>
</mule>
There's also more advanced configuration such as setting up key stores etc. Examples can be found here: https://github.com/mulesoft/mule-transport-amqp/blob/master/mule-transport-amqp/src/test/resources/amqps-namespace-config.xml

Anypoint Enterprise Security IP Filter

Hi I am working with Mule Anypoint Studio and I am trying to implement a list of IP's but my program is allowing every request from all IP's and it works only for one request per browser. How it is working i have no Idea. Please elaborate the working . Please don't share Mule Documentation Link because there they have not given much information.
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:filters="http://www.mulesoft.org/schema/mule/filters" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.5.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/filters http://www.mulesoft.org/schema/mule/filters/current/mule-filters.xsd
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd">
<filters:config name="Filters" doc:name="Filters"/>
<flow name="mule-security-ipFlow1" doc:name="mule-security-ipFlow1">
<http:inbound-endpoint exchange-pattern="request-response" host="196.111.1.1" port="8081" doc:name="HTTP" path="ip"/>
<filters:filter-by-ip config-ref="Filters" regex="196.16.4.1,196.17.7.13" doc:name="Filters"/>
<set-payload value="#['Data Mast']" doc:name="Set Payload"/>
<logger message="#[message.payload]" level="INFO" doc:name="Logger"/>
</flow>
</mule>
there are two scenarios here, we can specify regular expression to allow certain ip range requests or we can specify single ip address as part regex attaribute value.
<filters:filter-by-ip config-ref="Filters" regex="${fms.iprange}"
doc:name="verify-ip-address" />
if we want to allow comma separated ip address, its better to write custom filter and do the required logic .
Depending on how you are intending to deploy your flow your other option is to use api-kit to apply the IP whitelist (or blacklist) to your flow as a policy: