GithubHelp home page GithubHelp logo

Comments (15)

HansOlavS avatar HansOlavS commented on May 29, 2024 2

+1 from me.

It's a non-trivial thing to do this unless you're using the built-in lock time of the message and simply not abandoning it (so it times out and is picked up again). This method has several drawbacks because you can only have 7 minutes lock time (sometimes you want to wait longer before retrying) and a message also has a max retry count (sometimes you want to retry within a time frame and don't care so much about the number of retries).

To be honest I don't really understand where Defer() would be safe to use if it's not combined with a permanent store like a database. If you defer a message and your VM/App is recycled you lose that message forever.

Defer(TimeSpan) or Defer(ScheduleteTimeUtc) sounds perfect. Or maybe a separate method like Reschedule(ScheduleTimeUtc).

from azure-service-bus-dotnet.

SeanFeldman avatar SeanFeldman commented on May 29, 2024 1

Great suggestion. Also would cut down amount of work that has to be done today on the client-side to get a workaround.

from azure-service-bus-dotnet.

ddobric avatar ddobric commented on May 29, 2024 1

Regarding Defer(), you are right. But this is an additional required improvement. Defer introduce more problems than it helps, in that case. My intension around Abandon() is to provide us features, which do not require so much programming and introducing additional artifacts like DB.
With Deffer(TimeSpan), I mean postponing of the message at scheduled time, without of need to keep reference of it.

from azure-service-bus-dotnet.

SeanFeldman avatar SeanFeldman commented on May 29, 2024 1

@binzywu it introduced overhead that needs to be taken into consideration and coded each time. Because it's no longer a single message based operation, you need to have a transaction. Rather than just using Defer(timespan).
Also, from a tracking point of view, you want to handle the same message, just later. Saying that, @djrosanova made a good point saying that ASB doesn't mutate messages. But in this case, it would not be exactly a mutation, if broker is instructed to defer the processing.

from azure-service-bus-dotnet.

SeanFeldman avatar SeanFeldman commented on May 29, 2024 1

@jtaubensee I think you wanted to link to issue #6? 😉

from azure-service-bus-dotnet.

nemakam avatar nemakam commented on May 29, 2024 1

This issue has been added to milestone backlog. Given that we haven't planned for this feature yet, it might not be right to assign 2.0 milestone for this issue yet.

from azure-service-bus-dotnet.

SeanFeldman avatar SeanFeldman commented on May 29, 2024 1

I'll need this feature as it will be blocking for scenarios where a message needs to be delayed and the original message ID has to be kept, but native-dedup is in place. A workaround suggested here

Complete the message and schedule another message for 5 mins later.

would not work.

from azure-service-bus-dotnet.

gdodd1977 avatar gdodd1977 commented on May 29, 2024 1

What is the latest on this feature? This seems like a no-brainer feature for queue work.
Thanks.

from azure-service-bus-dotnet.

binzywu avatar binzywu commented on May 29, 2024

can this be achieved by re-send the current messages as scheduled messages and complete the current message?

from azure-service-bus-dotnet.

jtaubensee avatar jtaubensee commented on May 29, 2024

@ddobric - This is something that we can revisit when both .NET Core and AMQP support transactions. We could easily implement a method to do what you are talking about. We would create a transaction, complete the message, and send a scheduled message.

from azure-service-bus-dotnet.

SeanFeldman avatar SeanFeldman commented on May 29, 2024

Would this be considered for 1.0.0 or later?

from azure-service-bus-dotnet.

nemakam avatar nemakam commented on May 29, 2024

Like mentioned here , this would require AMQP transactions to be implemented first. Unfortunately, this would not make it to 1.0.0.

from azure-service-bus-dotnet.

SeanFeldman avatar SeanFeldman commented on May 29, 2024

Thanks @nemakam. Skipped that comment. So it could be then added to the 2.0.0 milestone or 2.x in case it has to be done after #6 is finished.

from azure-service-bus-dotnet.

SeanFeldman avatar SeanFeldman commented on May 29, 2024

Server side work is tracked here.

from azure-service-bus-dotnet.

DanCaveman avatar DanCaveman commented on May 29, 2024

We need this feature as well. I am trying to stay with a Microsoft stack, but it is difficult when the applications have to manage the scheduling and DLQ to get functionality that would be solved with a Defer(datetime) or Defer (timespan). Without it, the automatic DLQ functionality is not useful and we had to code logic to know when to dead letter a message.

from azure-service-bus-dotnet.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.