I'm trying to implement hangfire but as soon as I put Queue attribute, my job is not executing,
pls help me to understand if any other step is required, I'm following https://abp.io/docs/latest/framework/infrastructure/background-jobs/hangfireHi, did you configure a storage for Hangfire as follows in your module class?:
context.Services.AddHangfire(config => { config.UseSqlServerStorage(configuration.GetConnectionString("Default")); });
Also, if you followed the Manual Installation process, then ensure your application has the related DependOn attribute with the hangfiremodule:
[DependsOn(typeof(AbpBackgroundJobsHangfireModule))]
Yes, I have added
context.Services.AddHangfire(config => { config.UseSqlServerStorage(configuration.GetConnectionString("Default")); });also, I used API CLI for installation abp add-package Volo.Abp.BackgroundJobs.HangFire
It is working when I'm using [Queue("default")], is it fine to use default queue ?
I'm trying to implement hangfire but as soon as I put Queue attribute, my job is not executing,
pls help me to understand if any other step is required, I'm following https://abp.io/docs/latest/framework/infrastructure/background-jobs/hangfireHi, did you configure a storage for Hangfire as follows in your module class?:
context.Services.AddHangfire(config => { config.UseSqlServerStorage(configuration.GetConnectionString("Default")); });
Also, if you followed the Manual Installation process, then ensure your application has the related DependOn attribute with the hangfiremodule:
[DependsOn(typeof(AbpBackgroundJobsHangfireModule))]
Yes, I have added
context.Services.AddHangfire(config =>
{
config.UseSqlServerStorage(configuration.GetConnectionString("Default"));
});
also, I used API CLI for installation
abp add-package Volo.Abp.BackgroundJobs.HangFire
Hi,
if I get 10 requests from users, so will it process 10 requests at the same time or it will process request picked by each server which means 2 requests at the same time.
This will depend entirely on your configuration. For example:
app.UseHangfireServer(new BackgroundJobServerOptions { WorkerCount = 10 // or any number you need });
You can configure the degree of parallelism manually like above. See more: https://docs.hangfire.io/en/latest/background-processing/configuring-degree-of-parallelism.html
When I'm processing the background job, I'm calling the external services, and I need to wait for the response to complete the request so with hangfire, will it also wait the existing request to complete, or it will start next request parallelly.
I am not an expert on Hangfire, but when I check their documentation, I see that you can add throttling or concurrency limiters. See: https://docs.hangfire.io/en/latest/background-processing/throttling.html
I'm trying to implement hangfire but as soon as I put Queue attribute, my job is not executing,
pls help me to understand if any other step is required, I'm following https://abp.io/docs/latest/framework/infrastructure/background-jobs/hangfire
Hi,
Would you consider to use RabbitMQ or HangFire provider for background jobs? It is possible to process messages in parallel with them. See: https://github.com/abpframework/abp/issues/5217 and https://abp.io/docs/latest/framework/infrastructure/background-jobs/hangfire
Thank you, I'm considering hangfire but I want to understand how smooth will it be to switch from default ABP background job to hangfire, also how hangfire works? e.g. if I get 10 requests from users, so will it process 10 requests at the same time or it will process request picked by each server which means 2 requests at the same time. When I'm processing the background job, I'm calling the external services, and I need to wait for the response to complete the request so with hangfire, will it also wait the existing request to complete, or it will start next request parallelly.
protected override void HandlePropertiesBeforeSave() { var entries = ChangeTracker.Entries().ToList(); foreach (var entry in entries) { HandleExtraPropertiesOnSave(entry);
if (entry.State.IsIn(EntityState.Modified, EntityState.Deleted)) { UpdateConcurrencyStamp(entry); } } foreach (var entry in AbpEfCoreNavigationHelper.GetChangedEntityEntries().Where(x => x.State == EntityState.Unchanged)) { UpdateConcurrencyStamp(entry); } }
Hi, as it is override in dbcontext class, can you please confirm if it can impact the performance?
Hi, can you please confirm that there is a situation as described in this answer or not?
Hi, it seems like very similar case as I was not getting this error earlier. It is happening when load is high, also in my case too we have upgraded the version last year, but my class structure is below
public class PatientPhoneNumber_TR : FullAuditedAggregateRoot<Guid>
{
[CanBeNull]
public virtual string PhoneNumber { get; set; }
public long? PhoneTypeId { get; set; }
public long? EquipmentTypeId { get; set; }
public long? PatientId { get; set; }
public PatientPhoneNumber_TR()
{
}
public PatientPhoneNumber_TR(Guid id, string phoneNumber)
{
Id = id;
Check.Length(phoneNumber, nameof(phoneNumber), PatientPhoneNumber_TRConsts.PhoneNumberMaxLength, 0);
PhoneNumber = phoneNumber;
}
}
I'm using parent's id as FK in child table.
Please let me know what can I do to fix it?
I have noticed same issue on save token too (screenshot of error is attached below), please help to fix both.
but that's not directly related to ABP. it's a certificate that your hosting uses. you can create a console app and create everytime it expires
ok, can we control the issuer, by default for me issuer is localhost
try generating a new certificate, this topic has been discussed at https://abp.io/support/questions/8266/Generating-CRUD-using-abp-suite-for-module#answer-3a163c11-d8c4-b919-6178-9901f37c352e
I generated using
dotnet dev-certs https -v -ep openiddict. pfx -p 00000000-0000-0000-0000-000000000000 command to generate the openiddict. pfx certificate
but I'm looking for solution where I don't need to worry about its expiry, it should generate using code.
Hi,
It store
access_token
andrefresh_token
to the cookies, It will not affect your application. And the default value isfalse
. we usually don't recommend setting it to true.It will be useful when you need to call the Azure AD API(I assume you are using Azure external login).
ok, thank you.
You can consider set
SaveTokens
tofalse
Thank you. It is working with this, but may I know the use of it, is there any possibility that it can impact some other functionality ?