azure-service-bus-java
azure-service-bus-java copied to clipboard
Delivery not found on the receive link
Actual Behavior
- I have two applications (A and B) running independently
- Both use different topics: A-to-B and B-to-A
- Both have it's own TopicClient, SubcriptionClient and IMessageHandler.
- When both are running and send from A application to B and vice versa, in both I'm getting the error: Delivery not found on the receive link
Expected Behavior
- Application B receive the message successfully from A, then response to A successfully.
- Application A receive the message successfully from B.
Versions
- Manjaro Linux Community: 4.19.113
- Maven package version: 3.1.5
Additional information
Stack Trace from application A:
2020-03-30 18:39:56.703 INFO 83 --- [ol-1-thread-223] c.m.a.servicebus.MessageAndSessionPump : Completing message with sequence number '20' failed
java.lang.IllegalArgumentException: Delivery not found on the receive link.
at com.microsoft.azure.servicebus.primitives.CoreMessageReceiver.generateDeliveryNotFoundException(CoreMessageReceiver.java:1177) ~[azure-servicebus-3.1.5.jar!/:na]
at com.microsoft.azure.servicebus.primitives.CoreMessageReceiver.updateMessageStateAsync(CoreMessageReceiver.java:998) ~[azure-servicebus-3.1.5.jar!/:na]
at com.microsoft.azure.servicebus.primitives.CoreMessageReceiver.completeMessageAsync(CoreMessageReceiver.java:897) ~[azure-servicebus-3.1.5.jar!/:na]
at com.microsoft.azure.servicebus.MessageReceiver.lambda$completeAsync$7(MessageReceiver.java:265) ~[azure-servicebus-3.1.5.jar!/:na]
at java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:981) ~[na:1.8.0_171]
at java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2124) ~[na:1.8.0_171]
at com.microsoft.azure.servicebus.MessageReceiver.completeAsync(MessageReceiver.java:260) ~[azure-servicebus-3.1.5.jar!/:na]
at com.microsoft.azure.servicebus.MessageReceiver.completeAsync(MessageReceiver.java:253) ~[azure-servicebus-3.1.5.jar!/:na]
at com.microsoft.azure.servicebus.MessageAndSessionPump.lambda$receiveAndPumpMessage$2(MessageAndSessionPump.java:207) ~[azure-servicebus-3.1.5.jar!/:na]
at java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:822) ~[na:1.8.0_171]
at java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:797) ~[na:1.8.0_171]
at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:442) ~[na:1.8.0_171]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_171]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_171]
at java.lang.Thread.run(Thread.java:748)
Hi, I tested versión 3.2.0 recently and got the same exception.
I am also getting same error with azure-servicebus:3.3.0
. Please find below sample code to replicate this issue.
public static void receiveMessage() throws InterruptedException, ServiceBusException {
IMessageReceiver receiver = ClientFactory.createMessageReceiverFromConnectionStringBuilder(new ConnectionStringBuilder(connectionString, QUEUE_NAME), ReceiveMode.PEEKLOCK);;
Collection<IMessage> receiveBatch = receiver.receiveBatch(2);
LOGGER.info("toal received message count - '{}' " + receiveBatch.size());
for (IMessage iMessage : receiveBatch) {
LOGGER.info("received message body '{}' " + new String(iMessage.getBody()));
receiver.complete(iMessage.getLockToken());
}
receiver.close();
}