Hi Robbie, Thanks for the hints! I couldn't solve my problems, but let me leave some more info, which can be useful for other people.
Closing the consumer explicitly didn't help (it's closed on session close anyway). However, I have the feeling that the lifetime of the consumer does not affect the peek lock (imagine a long-running consumer: it doesn't lock the messages for longer than the lock duration). Setting the prefetch value to 1 didn't help as the next message comes to the consumer immediately after receive(). So, there could be 0 or 1 locked messages after each consumer. Setting the prefetch value to 0 brings me back to the drain problem: Service Bus doesn't answer anything after the sent packet with 'drain=true' , so receive() is blocked forever. However, there are some (probably empty) AMQP packets sent after some time, but Qpid doesn't send anything anymore. On Tue, Jun 28, 2016 at 6:34 PM, Robbie Gemmell <robbie.gemm...@gmail.com> wrote: > On 28 June 2016 at 17:00, Dale Green <green.dale1...@gmail.com> wrote: > > Hi people, > > > > I have a problem using Qpid JMS 0.9 with Service Bus. > > > > The use case is the following: > > I want to create a connection, session, and a queue consumer and receive > 0 > > or 1 messages within a given timeout. That is, receive(timeout) is called > > only once. Immediately after that, the session and the connection are > > closed. > > > > The problem is: > > The consumer may receive multiple messages during its lifetime (which the > > client code doesn't even see, because receive is called only once). For > > Service Bus, all this means peek-and-lock, so the messages that were sent > > to the Qpid client are locked for the time set in the "Lock Duration" > > property of the queue (default value is 30s/60s, Azure/Windows), and > > therefore they are unavailable for other Qpid consumers for a certain > > period of time. I would expect that something like the method Abandon() > > from the C# API should happen on session close. > > > > So: > > Is this a bug, feature, or I need to configure/call something in a > > different way? > > > > Thanks! > > My guess is that ServiceBus is not taking the consumers implicit > detachment when the session ends as reason to release the messages. > Perhaps try explicitly closing the MessageConsumer (I'm taking your > text above literally, such that you arent doing so currently) to see > if that prods it into doing so? > > Another thing you could to help is if you know you want at most 1 > message is to only give 1 message credit at a time (setting the > prefetch config to 1 or 0...though the earlier server issue you ran > into around 'drain' behaviour may mean this doesnt work so well) > > Robbie > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org > For additional commands, e-mail: users-h...@qpid.apache.org > >