After migrating between cloud queue services, here is an honest comparison. Neither is universally better. They make different tradeoffs.
Where OCI Queues Wins
Pricing transparency. OCI charges per API call with clear tiers. SQS pricing is similar but adds data transfer charges that are hard to predict. Teams that migrate often see meaningful cost reductions, mostly from eliminated cross-AZ transfer fees.
Integration with OCI services. If compute, database, and networking are on OCI, queues integrate natively with IAM policies, VCN service gateways, and OCI monitoring. No cross-cloud networking headaches.
Where SQS Wins
FIFO queues. SQS FIFO queues guarantee exactly-once processing with message deduplication. OCI Queues does not have a FIFO equivalent. If ordering matters, SQS is the only option without building a custom sequencing layer.
SDK maturity. The AWS SDK for Java has been battle-tested for over a decade. The OCI SDK is functional but younger. Edge cases around retry behavior, connection pooling, and timeout handling are better documented in the AWS SDK.
Dead letter queue configuration. SQS DLQ setup is declarative: one JSON policy attached to the queue. OCI requires creating a separate queue, configuring a channel, and linking them programmatically. More flexible, but more work.
The Migration Reality
If a team is already on OCI, using OCI Queues makes sense. The integration benefits and cost savings outweigh SQS's feature advantages for most use cases. If FIFO guarantees are needed, either build a sequencing layer on OCI Queues or keep SQS for that specific use case. Multi-cloud queue systems are ugly but sometimes necessary.