I am trying to push incoming data to AWS SQS in WSO2 MI 4.4.0 using AWS SQS connector v3.0.1.
Integration: WSO2 MI 4.4.0
Developer Tool: WSO2 MI for VS Code extension
OS: Ubuntu 22.04
Proxy server: SQUID
WSO2 MI is installed in linux (Ubuntu 22.04) , all the outbound call will happen via SQUID proxy server as it's corporate environment set up.
In local system(Windows), within VS Code API works fine and it can able to push data to SQS. However after exporting CAR file, it is placed inside Ubuntu - Mi Server directory <MI_HOME>/repository/deployment/server/carbonapps
To set up proxy server in WSO2 MI , i followed this WSO2 doc guideline
added the parameters given below to the deployment.toml file
[transport.http]
sender.proxy_host= "10.X.X.X"
sender.proxy_port= 3128
[transport.blocking.http]
sender.parameter.'http.proxyHost'= "10.X.X.X"
sender.parameter.'http.proxyPort'= 3128
ERROR Logs:
[2025-09-29 11:32:25,599] ERROR {org.wso2.carbon.connector.amazonsqs.operations.message.SendMessage} - {api:WSO2MI_SQSAPI} Error occurred while generating the client: software.amazon.awssdk.core.exception.SdkClientException: Unable to execute HTTP request: Connect to sqs.us-east-1.amazonaws.com:443 [sqs.us-east-1.amazonaws.com/3.233.X.X] failed: connect timed out
at software.amazon.awssdk.core.exception.SdkClientException$BuilderImpl.build(SdkClientException.java:111)
at software.amazon.awssdk.core.exception.SdkClientException.create(SdkClientException.java:47)
at software.amazon.awssdk.core.internal.http.pipeline.stages.utils.RetryableStageHelper2.setLastException(RetryableStageHelper2.java:226)
at software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage2.execute(RetryableStage2.java:65)
at software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage2.execute(RetryableStage2.java:36)
at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
at software.amazon.awssdk.core.internal.http.StreamManagingStage.execute(StreamManagingStage.java:53)
at software.amazon.awssdk.core.internal.http.StreamManagingStage.execute(StreamManagingStage.java:35)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.executeWithTimer(ApiCallTimeoutTrackingStage.java:80)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.execute(ApiCallTimeoutTrackingStage.java:60)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.execute(ApiCallTimeoutTrackingStage.java:42)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallMetricCollectionStage.execute(ApiCallMetricCollectionStage.java:50)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallMetricCollectionStage.execute(ApiCallMetricCollectionStage.java:32)
at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ExecutionFailureExceptionReportingStage.execute(ExecutionFailureExceptionReportingStage.java:37)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ExecutionFailureExceptionReportingStage.execute(ExecutionFailureExceptionReportingStage.java:26)
at software.amazon.awssdk.core.internal.http.AmazonSyncHttpClient$RequestExecutionBuilderImpl.execute(AmazonSyncHttpClient.java:210)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.invoke(BaseSyncClientHandler.java:103)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.doExecute(BaseSyncClientHandler.java:173)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.lambda$execute$1(BaseSyncClientHandler.java:80)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.measureApiCallSuccess(BaseSyncClientHandler.java:182)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.execute(BaseSyncClientHandler.java:74)
at software.amazon.awssdk.core.client.handler.SdkSyncClientHandler.execute(SdkSyncClientHandler.java:45)
at software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler.execute(AwsSyncClientHandler.java:53)
at software.amazon.awssdk.services.sqs.DefaultSqsClient.sendMessage(DefaultSqsClient.java:2184)
at org.wso2.carbon.connector.amazonsqs.operations.message.SendMessage.execute(SendMessage.java:90)
at org.wso2.integration.connector.core.AbstractConnectorOperation.connect(AbstractConnectorOperation.java:53)
at org.wso2.integration.connector.core.AbstractConnector.mediate(AbstractConnector.java:46)
at org.apache.synapse.mediators.ext.ClassMediator.updateInstancePropertiesAndMediate(ClassMediator.java:240)
at org.apache.synapse.mediators.ext.ClassMediator.mediate(ClassMediator.java:111)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:132)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:79)
at org.apache.synapse.mediators.template.TemplateMediator.mediate(TemplateMediator.java:147)
at org.apache.synapse.mediators.template.InvokeMediator.mediate(InvokeMediator.java:199)
at org.apache.synapse.mediators.template.InvokeMediator.mediate(InvokeMediator.java:114)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:132)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:79)
at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158)
at org.apache.synapse.api.Resource.process(Resource.java:342)
at org.apache.synapse.api.API.process(API.java:476)
at org.apache.synapse.api.AbstractApiHandler.apiProcess(AbstractApiHandler.java:95)
at org.apache.synapse.api.AbstractApiHandler.dispatchToAPI(AbstractApiHandler.java:73)
at org.apache.synapse.api.rest.RestRequestHandler.dispatchToAPI(RestRequestHandler.java:90)
at org.apache.synapse.api.rest.RestRequestHandler.process(RestRequestHandler.java:76)
at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:54)
at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:352)
at org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:101)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:401)
at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:460)
at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:208)
at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
Suppressed: software.amazon.awssdk.core.exception.SdkClientException: Request attempt 1 failure: Unable to execute HTTP request: Connect to sqs.us-east-1.amazonaws.com:443 [sqs.us-east-1.amazonaws.com/3.233.X.X] failed: connect timed out
Suppressed: software.amazon.awssdk.core.exception.SdkClientException: Request attempt 2 failure: Unable to execute HTTP request: Connect to sqs.us-east-1.amazonaws.com:443 [sqs.us-east-1.amazonaws.com/3.233.X.X] failed: connect timed out
Suppressed: software.amazon.awssdk.core.exception.SdkClientException: Request attempt 3 failure: Unable to execute HTTP request: Connect to sqs.us-east-1.amazonaws.com:443 [sqs.us-east-1.amazonaws.com/3.233.X.X] failed: connect timed out
Caused by: org.apache.http.conn.ConnectTimeoutException: Connect to sqs.us-east-1.amazonaws.com:443 [sqs.us-east-1.amazonaws.com/3.233.X.X] failed: connect timed out
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:151)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376)
at software.amazon.awssdk.http.apache.internal.conn.ClientConnectionManagerFactory$DelegatingHttpClientConnectionManager.connect(ClientConnectionManagerFactory.java:86)
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)
at software.amazon.awssdk.http.apache.internal.impl.ApacheSdkHttpClient.execute(ApacheSdkHttpClient.java:72)
at software.amazon.awssdk.http.apache.ApacheHttpClient.execute(ApacheHttpClient.java:254)
at software.amazon.awssdk.http.apache.ApacheHttpClient.access$500(ApacheHttpClient.java:104)
at software.amazon.awssdk.http.apache.ApacheHttpClient$1.call(ApacheHttpClient.java:231)
at software.amazon.awssdk.http.apache.ApacheHttpClient$1.call(ApacheHttpClient.java:228)
at software.amazon.awssdk.core.internal.util.MetricUtils.measureDurationUnsafe(MetricUtils.java:99)
at software.amazon.awssdk.core.internal.http.pipeline.stages.MakeHttpRequestStage.executeHttpRequest(MakeHttpRequestStage.java:79)
at software.amazon.awssdk.core.internal.http.pipeline.stages.MakeHttpRequestStage.execute(MakeHttpRequestStage.java:57)
at software.amazon.awssdk.core.internal.http.pipeline.stages.MakeHttpRequestStage.execute(MakeHttpRequestStage.java:40)
at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptTimeoutTrackingStage.execute(ApiCallAttemptTimeoutTrackingStage.java:72)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptTimeoutTrackingStage.execute(ApiCallAttemptTimeoutTrackingStage.java:42)
at software.amazon.awssdk.core.internal.http.pipeline.stages.TimeoutExceptionHandlingStage.execute(TimeoutExceptionHandlingStage.java:78)
at software.amazon.awssdk.core.internal.http.pipeline.stages.TimeoutExceptionHandlingStage.execute(TimeoutExceptionHandlingStage.java:40)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptMetricCollectionStage.execute(ApiCallAttemptMetricCollectionStage.java:55)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptMetricCollectionStage.execute(ApiCallAttemptMetricCollectionStage.java:39)
at software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage2.executeRequest(RetryableStage2.java:93)
at software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage2.execute(RetryableStage2.java:56)
... 52 more
Caused by: java.net.SocketTimeoutException: connect timed out
at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:412)
at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:255)
at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:237)
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.base/java.net.Socket.connect(Socket.java:609)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:368)
at software.amazon.awssdk.http.apache.internal.conn.SdkTlsSocketFactory.connectSocket(SdkTlsSocketFactory.java:65)
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
... 81 more
WSO2 MI API:
<?xml version="1.0" encoding="UTF-8"?>
<api context="/wso2mi_sqsapi" name="WSO2MI_SQSAPI" xmlns="http://ws.apache.org/ns/synapse">
<resource methods="POST" uri-template="/">
<inSequence>
<variable name="InputPayload" type="STRING" expression="${payload}"/>
<variable name="encoded_payload" type="STRING" expression="${base64encode(vars.InputPayload)}"/>
<property expression="fn:substring-after(get-property('MessageID'),'uuid:')" name="MessageID" scope="default" type="STRING"/>
<log category="INFO" separator="*,*" logMessageID="true" logFullPayload="true">
<message></message>
<property name="***WSO2 SQSAPI is " value="invoked***"/>
<property name="Incoming Request** " expression="${vars.InputPayload}"/>
<property name="encodedPayload** " expression="${vars.encoded_payload}"/>
<property name="UniqueMessageID" expression="get-property('MessageID')"/>
</log>
<script language="rhinoJs"><![CDATA[var customer_payload = mc.getProperty("InputPayload");
var myJSON = JSON.parse(customer_payload);]]></script>
<script language="rhinoJs"><![CDATA[var log = mc. getServiceLog();
var uuid=mc.getProperty('MessageID');
log.info("uuid:: " + uuid);
var grp_id=new Date();
var g_id = String(grp_id.getTime());
var g_ids=String(grp_id.getMilliseconds());
var m_id = g_id.concat(g_ids).concat('-').concat(uuid);
log.info("Message_Deduplication_id:: " + m_id);
mc.setProperty('g_id',m_id);]]></script>
<property name="g_id" scope="default" type="STRING" expression="get-property('g_id')"/>
<amazonsqs.sendMessage configKey="Amazon_SQS_Connection">
<queueUrl>https://queue.amazonaws.com/QueueID/MYQUEUE.fifo</queueUrl>
<delaySeconds></delaySeconds>
<messageAttributes></messageAttributes>
<messageBody>{${vars.encoded_payload}}</messageBody>
<messageGroupId>{get-property('g_id')}</messageGroupId>
<messageDeduplicationId>{get-property('g_id')}</messageDeduplicationId>
<messageSystemAttributes></messageSystemAttributes>
<apiCallTimeout></apiCallTimeout>
<apiCallAttemptTimeout></apiCallAttemptTimeout>
<responseVariable>amazonsqs_sendMessage_123</responseVariable>
<overwriteBody>true</overwriteBody>
</amazonsqs.sendMessage>
<log category="INFO" logMessageID="false" logFullPayload="false">
<message></message>
<property name="SQS_response" expression="${payload}"/>
</log>
<payloadFactory media-type="json" template-type="default">
<format>{
"Status": "Payload accepted by WSO2 MI POC layer"
}</format>
</payloadFactory>
<respond/>
</inSequence>
<faultSequence>
</faultSequence>
</resource>
</api>
LocalEntry:
<?xml version="1.0" encoding="UTF-8"?>
<localEntry key="Amazon_SQS_Connection" xmlns="http://ws.apache.org/ns/synapse">
<amazonsqs.init>
<connectionType>AMAZONSQS</connectionType>
<region>us-east-1</region>
<accessKeyId>AKI*******</accessKeyId>
<secretAccessKey>IOX**********</secretAccessKey>
<name>Amazon_SQS_Connection</name>
<proxyHost>10.X.X.X</proxyHost>
<proxyPort>3128</proxyPort>
</amazonsqs.init>
</localEntry>
In addition to above config level changes, env variable also set in Server.
export HTTP_PROXY="http://10.X.X.X:3128"
export HTTPS_PROXY="https://10.X.X.X:3128"
export http_proxy="http://10.X.X.X:3128"
export https_proxy="https://10.X.X.X:3128"
What else configuration is missing at WSO2 MI side or server level? why it works fine in local system (though not added any proxy details in init operation).
Is this issue related to SQS Connector V3.0.1 , if yes can i downgrade connector version , but VS Code always pulls latest connector from store, no import option as well in VS Code.
how to resolve this SendMessage operation issue using SQS Connector with proxy server set up?