Comments (5)
I can reproduce the issue, and as I suspected, it only occurs when classic queues are used.
The broker provides retry count information for us via the x-delivery-count
header, but only when consuming messages from a quorum queue. We have to fall back to tracking the data locally when classic queues are being used.
For this reason, and many others, I highly recommend converting to quorum queues as soon as possible! We have a migration guide and a tool to help you do this.
Regarding a fix for when running on classic queues, locally tracked information is never going to be as reliable as information provided by the broker, but we could increase the capacity of the collection. It would still be possible to hit this problem if there are enough failing messages in the queue regardless of how large the collection is, but it's clear that the current value of 100 is too low!
from nservicebus.rabbitmq.
In addition we have also noticed that switching PrefechMultiplier to 1 makes immediate retries to work properly
from nservicebus.rabbitmq.
We also prepared a solution with minimal configuration with which we were able to reproduce the error.
To reproduce the issue, please follow instructions in readme file from the following repository:
https://github.com/bsmykowskiinf/RabbitRetriesTest
from nservicebus.rabbitmq.
@bonieckimarcin @bsmykowskiinf Thanks for including a repro project. That will make it much easier to investigate.
One question. I see you're using classic queues. Have you tried quorum queues? It would be good to know if it works properly with quorum queues or still fails in the same way.
from nservicebus.rabbitmq.
Upgrading to quorum is on our to do list. But looking at size and complexity of our project, it requires a lot of testing and we are not able to do that immediately. We still have to work with classic queues for some time.
from nservicebus.rabbitmq.
Related Issues (20)
- Endless loop when bus had been stopped while transport is trying to reconnect HOT 5
- Investigate if ability to provide a custom ArrayPool can provide any performance benefit
- Expose ConnectionFactory.MaxMessageSize on the transport configuration API
- Stopping an endpoint floods the log with "Reconnecting to the broker failed: System.ObjectDisposedException" HOT 1
- Add automated tests that runs against AmazonMQ
- Add automated tests that runs against CloudAMQP
- Endpoint never reconnects to RabbitMQ after channel timeout HOT 7
- Multi target commandline to net6, net7 and newer
- Retries of headerless message causes indefinite requeuing on classic queues HOT 5
- Message loss in migrate-to-quorum command HOT 3
- Automatic rate limiting feature might cause duplicate messages HOT 1
- nsbVersion can't be computed in single file deployments HOT 2
- ChannelProvider Publish reconnection attempts continue forever after IEndpointInstance had been stopped HOT 9
- Suppress creation of `nsb.v2.verify-stream-flag-enabled` queue HOT 2
- Ability to not have the delayed delivery infrastructure created
- Should we expose a way to configure the Consumer Acknowledgement Timeout HOT 1
- Immediate retry count does not increase for rabbit messages which are sent to queue without "message_id" property after upgrade to NServiceBus 8 HOT 5
- Enhance code readability and using .NET 8 new features HOT 1
- Vulnerabilities in transitive dependencies HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nservicebus.rabbitmq.