Hello Folks,
Please help me understand few concepts on the usage of proton-j/reactor API:
While using the receiver – I am overriding BaseHandler.onDelivery
event-callback to receive a batch of Messages. I am proactively flushing all
available deliveries that comes as a batch – if available. Here’s pseudo-code
of what I am doing – pls. correct if the intent is right. We are running into
blocked Receiver when we are running 1 receiver per connection (using reactor
framework) – does the below code ring any bells ?
while (delivery != null && delivery.isReadable() &&
!delivery.isPartial())
{
int size = delivery.pending();
byte[] buffer = new byte[size];
int read = receiveLink.recv(buffer, 0, buffer.length);
Message msg = Proton.message();
msg.decode(buffer, 0, read);
messages.add(msg);
deliveries.add(delivery);
if (!receiveLink.advance())
{
break;
}
else
{
delivery = receiveLink.current();
}
}
application.onReceiveCallBack(messages);
for(Delivery unsettledDelivery: deliveries)
{
unsettledDelivery.settle();
}
- Qstn: on a Receiver, Under what circumstances will a delivery be not readable
?
Thanks a lot for the Collaboration effort!
Sree