Hi,
Scenario
I have a SQS queue with messages, each message is targeted to a specific user, each user joins his own Phoenix channel via websocket. I’m using Broadway to keep pulling the messages. In it’s handle_message/3 I use Phoenix’s broadcast/3 to push the message to the user:
Endpoint.broadcast("user:#{user_id}", "message", message)
I would like to make sure the user has received the message before I acknowledge it to Broadway/SQS.
Since the broadcast/3
doesn’t return the delivery result, I’m planning to make my JavaScript library to push an “ACK” back to the channel. I would include Broadway’s message_id
in both messages.
The problem
How can I acknowledge the message to Broadway from the Phoenix’s channel handle_in/3?
As a side note, I started wondering if Broadway is the right tool for my use case, given the handle_message/3
documentation says:
Basically, any CPU bounded task that runs against a single message should be processed here.
but my task is more an I/O thing.
Any help is much appreciated.