- Frontend interval: Every 3 seconds
- Backend long-polling: 5 seconds (WaitTimeSeconds=5)
- Messages per poll: Maximum 10 messages
- Mode: Non-destructive reading
When a message is read:
receive_message()retrieves it and makes it invisible (30s by default)- Message is displayed in the interface
change_message_visibility(VisibilityTimeout=0)makes it immediately visible again- Message remains in the queue
Advantage: You can monitor without consuming messages Disadvantage: Same messages may appear multiple times
SNS Topic → Publishes a message
↓
SQS Queue ← Receives the message
↓
Monitoring ← Detects in < 8 seconds (3s interval + 5s long-poll)
↓
Interface ← Displays the message
Typical delay: 3-8 seconds
Monitoring → Poll #1 (0 messages) → "waiting..."
→ Poll #2 (0 messages) → "waiting..."
→ Poll #3 (0 messages) → "waiting..."
...
→ Poll #5 → Status update displayed
A status indicator displays every 5 polls to confirm monitoring is active.
Scenario:
- Monitoring active with messages displayed
- You purge the queue in AWS console
- Old messages remain displayed in the interface
Why? The interface keeps a local history of the last 100 messages.
Solution: Click "Stop Monitoring" then "Start Monitoring" to reset the display.
Scenario:
- Message is being read (invisible for 0-30s)
- You manually delete the message
- Monitoring tries to make it visible → Silent failure
Why? change_message_visibility() fails if the message no longer exists.
Behavior: Error is ignored (silent catch), no impact on monitoring.
Scenario: You see the same message multiple times in the interface.
Why?
- Non-destructive mode: message stays in queue
- Monitoring re-detects it on each poll
Solution: This is normal! Monitoring shows all present messages.
Monitoring active - waiting for messages...
Polling #12 - 14:23:45
Messages will appear here as soon as they are received
Each message shows:
- MESSAGE: New SQS message (green)
- SENT: CloudWatch metric (yellow)
- RECEIVED: CloudWatch metric (purple)
- ERROR: Polling error (red)
Monitoring active - Last poll: 14:23:45 (25 polls)
Symptom: Nothing happens after "Start Monitoring"
Possible causes:
- No topic/queue selected
- Expired credentials
- Insufficient IAM permissions
Verification:
- Open JavaScript console (F12)
- Check logs in terminal where
python app.pyis running - Verify you have selected resources
Symptom: Messages published but not displayed
Verification:
-
Confirm message arrives in queue:
- Open AWS SQS console
- Check "Messages Available"
- If 0, problem is SNS → SQS
-
Check monitoring:
- Does status indicator change? (confirms poll is working)
- If yes, wait 8-10 seconds maximum
- If no, stop/restart monitoring
-
Verify IAM permissions:
{ "Effect": "Allow", "Action": [ "sqs:ReceiveMessage", "sqs:GetQueueUrl", "sqs:ChangeMessageVisibility" ], "Resource": "arn:aws:sqs:*:*:*" }
Symptom: Same message ID displayed multiple times
Cause: Normal non-destructive mode
Solution:
- If annoying, add deduplication on frontend (future improvement)
- Or use MessageID to identify duplicates
Symptom: Red error message in log
Possible causes:
- Expired session token → Regenerate credentials
- Deleted queue → Run a new scan
- Missing permissions → Check IAM
- Incorrect region → Verify region in scan
- Start monitoring on an empty queue
- Verify status indicator updates
- Publish a test message
- Confirm display in < 10 seconds
- Select only important queues
- Use queue filter if many resources
- Stop monitoring when no longer needed
- Periodically refresh (Stop/Start) to clean history
- Open JavaScript console (F12)
- Check Network tab to see
/api/monitorrequests - Verify JSON responses
- Check backend terminal logs
- Deduplication: No message deduplication in interface
- History: Limited to 100 messages, oldest are removed
- Latency: 3-8 seconds between publication and display
- FIFO Queues: Supported but may have specific behaviors
- Messages > 500 chars: Body truncated in interface
- Purge delay: AWS can take up to 60 seconds to fully purge a queue
- Deduplication by MessageID on frontend
- "Auto-delete" option for destructive reading
- Dynamic polling interval adjustment
- Message filtering by pattern
- Message history export
- WebSocket for real-time push (instead of polling)