I dont need to look at the new trace to know that the old trace shows
an issue which is not in the client. The consumer asked for one
message be sent or the credit discarded, and the server discarded the
credit without sending a message (at least three of which were just
sent to and accepted by it immediately prior, and which you indicate
are visible on your queue).

The "consumer.receiveNoWait()" and "consumer.receive(100)" do
different things under the cover (unless a message is already locally
available at the client when the call is made, something you are
deliberately preventing from happening by configuring zero prefetch)
so it isnt surprising things might behave differently against a
server. The former grants 1 credit in a draining flow in this case,
requesting it either gets a message if available or an indication none
are available (here its getting such an indication). The latter grants
a credit, leaves it outstanding as you provided a receive time period,
returns any message arriving within the timeout, or drains the credit
upon timeout (thus ensuring your requested zero-prefetch behaviour)
and either returns a message if it arrives or null if one does not.

The difference with the receive(100) is likely that the server sends
the message due to the credit being outstanding for a period, and not
due to any subsequent drain attempts, which may no longer even occur
if the message is sent sufficiently quickly. The new logs show they
mostly dont happen at all and only sometimes do, but I'd guess even in
those cases the arriving message was probably still put in-flight
before the draining flows were received.

Robbie

On Wed, 19 Jun 2019 at 13:03, akabhishek1
<[email protected]> wrote:
>
> Hi Robbie,
>
> Thanks a lot for quick reply. I replaced only "consumer.receiveNoWait()"
> operation to "consumer.receive(100)" is source code and kept everything
> same.
>
> Please find the attached updated log. As you can see that, I am able to
> receive messages continuously.
>
> It will be very difficult for me to justify ServiceBus team for this issue,
> as One operation "receive(100)" is working fine, but other operation
> "receiveNoWait()" is not working fine.
>
> Please take a look on attached log, if you still feel that there is no issue
> from Qpid side then please let me know, so I can raise ticket against
> ServiceBus team.
>
> Regards,
> Abhishek Kumar
> ReceiveWaitDurationLogs.txt
> <http://qpid.2158936.n2.nabble.com/file/t396358/ReceiveWaitDurationLogs.txt>
>
>
>
> --
> Sent from: http://qpid.2158936.n2.nabble.com/Apache-Qpid-users-f2158936.html
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to