On 16 November 2016 at 18:08, Adel Boutros <adelbout...@live.com> wrote:
> Hello,
>
>
> I have a simple C++ client which connects to a Qpid Java Broker (6.0.4) and 
> receives messages.
>
> With the default behavior of the C++ client, how can I know when a delivery 
> has been settled?
>
> It seems there is no way for me to know that.
>
>
> I have debugged a bit and when the on_message is called, the message becomes 
> in "Acquired" state on the broker. Later on, somewhere which I haven't found 
> yet, the message is settled and disappears from the broker. However none of 
> the functions I implemented below is called.
>

To be clear, the message is acquired on the broker before it is ever
sent to the client. When (or if) the on_message fires exactly has no
bearing on that. After the handler returns, the message is then
accepted+settled (unless configured otherwise) and once the broekr
sees that its removed form the queue. This is the same as e.g the JMS
MessageListener case using auto ack.

Most of the methods you show below will only be called when
publishing, to let you know the broker has
accepted/rejected/etc+settled the message you sent (assuming it was
sent unsettled). In this case it is the client is accepting+settling,
and as soon as it does the broker can't update it about that message
again (because the client already considers it settled).

>
> Can you please assist?
>
>
> Console output
>
> -----------------------
>
> on_message
>
>
> Code
>
> -----------------------
>
>
> class MyHandler : public proton::messaging_handler
> {
> public:
>
>    virtual void on_container_start(proton::container &c)
>    {
>       proton::url url("localhost:5672");
>       proton::connection connection = c.connect(url);
>       proton::receiver_options 
> receiverOptions(proton::receiver_options().credit_window(0));
>       connection.open_receiver("queue.name", receiverOptions);
>    }
>
>    virtual void on_receiver_open(proton::receiver& l)
>    {
>       l.add_credit(1);
>    }
>
>    virtual void on_message(proton::delivery &d, proton::message &m)
>    {
>       std::cout << "on_message" << std::endl;
>    }
>    virtual void on_delivery_settle(proton::delivery &d)
>    {
>       std::cout << "on_delivery_settle" << std::endl;
>    }
>    virtual void on_tracker_accept(proton::tracker &d)
>    {
>       std::cout << "on_tracker_accept" << std::endl;
>    }
>
>    virtual void on_tracker_reject(proton::tracker &d)
>    {
>       std::cout << "on_tracker_reject" << std::endl;
>    }
>
>    virtual void on_tracker_release(proton::tracker &d)
>    {
>       std::cout << "on_tracker_release" << std::endl;
>    }
>
>    virtual void on_tracker_settle(proton::tracker &d)
>    {
>       std::cout << "on_tracker_settle" << std::endl;
>    }
> };
>
>
>
> Regards,
>
> Adel

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org
For additional commands, e-mail: users-h...@qpid.apache.org

Reply via email to