0

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?

1 Answer 1

0

After placing required JARs inside <PRODUCT_HOME>/lib as stated in WSO2 official doc link , The above mentioned issue got resolved.

List of JARs added:

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.