SQS Not Sending Message to Queue

0

Hello,

I am having issues with SQS. It seems like no matter how I send a SQS message, it is not going to the queue.

  1. Send from SQS in the console: Amazon SQS > Queues > MyQueue > Send and receive messages
  2. Send from Lambda function: I have a dispatcher lambda function set up where the message to be sent is in the test section of Lambdas. This gives the most information. It looks like there is some kind of time out error happening.
  3. Send from my Application: My application has message-sending built in throughout the codebase for certain features. None of those triggers seem to be doing anything.

None of these messages are showing up in the queue. How did I check?

  • In the Queues page, check the Messages Available and Messages in Flight (unchanged)
  • In the Send and receive messages page, Poll for messages. Retrieved nothing. Tried adjusting timeouts and max message count. Still nothing.
  • In the Application, I am not receiving any messages.

All of this was functional until last week. I noticed this happening since at least earlier this week on Monday (today is Friday). I don't remember changing any network configurations or anything related to SQS. On Wednesday, there was a delay in messages getting to the queue but they did eventually show up. Today they do not.

All the resources are in US-East-2 (Ohio)

Lambda timeout error:

{
  "errorType": "Error",
  "errorMessage": "connect ETIMEDOUT",
  "trace": [
    "Error: connect ETIMEDOUT",
    "    at Connection._handleConnectTimeout (/var/task/node_modules/mysql/lib/Connection.js:409:13)",
    "    at Object.onceWrapper (events.js:420:28)",
    "    at Socket.emit (events.js:314:20)",
    "    at Socket.EventEmitter.emit (domain.js:483:12)",
    "    at Socket._onTimeout (net.js:483:8)",
    "    at listOnTimeout (internal/timers.js:554:17)",
    "    at processTimers (internal/timers.js:497:7)",
    "    --------------------",
    "    at Protocol._enqueue (/var/task/node_modules/mysql/lib/protocol/Protocol.js:144:48)",
    "    at Protocol.handshake (/var/task/node_modules/mysql/lib/protocol/Protocol.js:51:23)",
    "    at Connection.connect (/var/task/node_modules/mysql/lib/Connection.js:116:18)",
    "    at Object.<anonymous> (/var/task/index.js:13:8)",
    "    at Module._compile (internal/modules/cjs/loader.js:999:30)",
    "    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)",
    "    at Module.load (internal/modules/cjs/loader.js:863:32)",
    "    at Function.Module._load (internal/modules/cjs/loader.js:708:14)",
    "    at Module.require (internal/modules/cjs/loader.js:887:19)",
    "    at require (internal/modules/cjs/helpers.js:74:18)"
  ]
}

What are the next steps here? What should I try next?

asked 5 months ago297 views
2 Answers
1

Could it be that you have another consumer on that queue that consumes the messages before you get them in your app? Check the queue metrics, specifically, NumberOfMessagesSent. This will let you know if any messages were added to the queue.

profile picture
EXPERT
Uri
answered 5 months ago
  • Unless someone created another instance of the environment and connected to the queues, I don't think it's likely there is another consumer.

    I checked the queue metrics. It looks like no messages have been sent to the queue since Wednesday, which coincidentally is the last day I saw things working. I also tried sending a message now and could not verify in any way that the message was sent or received.

  • I would suggest creating a support case.

  • How do I create a support case?

  • "Technical support is unavailable under the Basic Support plan. Upgrade your plan to gain access to AWS technical support, architectural guidance, and more."

    So is there no way to get help on this without paying for a support plan?

  • Here on the forums we don't have access to your details; nor do we have the same access that the support team does to support you. We can only give general advice because we cannot see how the underlying services are configured.

0

Are you seeing an error messages or is your code throwing exceptions when you are sending messages? Have the IAM permissions changed so that you (and/or the code/Lambda function) are no longer allowed to send messages to the queue?

It looks like you're doing all the right steps. If it were me, I'd delete and recreate the queue as well.

profile picture
EXPERT
answered 5 months ago
  • No errors shown in AWS console or from the application. Updated original post with timeout error given by Lambda.

    I don't think any IAM permissions changed but even if they did, as a user with full admin privileges, shouldn't SQS be able to send a message to itself from the AWS console?

  • If the queue was (somehow) deleted/recreated you would be seeing the Lambda fail because the permissions have to be re-established but sending would still work. Other consumers would (probably) continue to work. As per Uri's comment I would definitely raise a support case here to track where the messages are going.

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions