I did find Hangfire.Couchbase to use it but unfortunately it doesn’t work with the SDK 3.4.
Hangfire.Couchbase library is created for SDK 2.7.12.
I thought this is easy to adjust but I’m really running into a lot of problems.
Why is the library not backwards compatible?
Does anyone have a working version of Hangfire.Couchbase adapted for the SDK 3.4?
It appears that the Hangfire.Couchbase extension has not been updated in a long time and the author has archived it.
Couchbase SDKs versioning are all based off Semver, there is no compatibility guaranteed between MAJOR version releases. When SDK 3 was designed, it was intended that we would consolidate into a single API definition for all languages (Java, NET, etc). In doing so, we had to make changes that were not backward compatible for all languages.
I do not know of any and doing a quick search does not show any. If you are serious about porting Hangfire from SDK2 to SDK3, then you would likely have to fork the repo and create a new extension based off the newer API. Perhaps @matthew.groves can add to this discussion as he was a contributor to the original repo?
It’s a real shame that I’m apparently the only big fan of couchbase.
I know how well couchbase works and how fast it is.
I also regret that every example or library I find is always based on the old SDK.
If Matthew Groves knows how to convert this easily, it would save a lot of time.
for example this is the old SDK:
IOperationResult sequence = bucket.Increment(“jobs:id”, 1, 1);
And i think tis will be the new SDK:
ICounterResult sequence = collection.Binary.IncrementAsync(“jobs:id”, options =>
{
options.Delta(1);
options.Initial(1);
}).GetAwaiter().GetResult();
The old can check this with if (sequence.Success == false)
How to do this with the new SDK???
Your definitely not the only fan of CB; the Hangfire + Couchbase interest may not be there though
So, the documentation is all there and there is a migration guide, the changes just need to be applied to Couchbase.Hangfire.
Besides the support for await/async and the use of the options pattern, the major difference between SDK2 and SDK3 is the error handling. In SDK2, the IOperationResult contained information regarding the state of the operation (success, KeyNotFound, etc). In SDK3 exceptions are thrown and must be handled if the operation failed to succeed.
If there is a lot of interest in CB + Hangfire, it would make sense to start porting SDK2 version to SDK3.