Right architecture for using HangFire

Hi,

I’m about to start using hangfire in C# in a asp.net mvc web application, and wonder how to create the right architecture.

As we are going to use HangFire, we are using it as a messagequeue, so we can process(store in the database) the user data directly and then for instance notify other systems and send email later in a separate process.
So our code now looks like this

function Xy(Client newClient)
{
_repository.save(newClient);
_crmConnector.notify(newClient);
_mailer.Send(_repository.GetMailInfo(), newClient)
}
And now we want to put the last two lines ‘on the queue’

So following the example on the hangfire site we could do this
var client = new BackgroundJobClient();
client.Enqueue(() => _crmConnector.notify(newClient));
client.Enqueue(() => _mailer.Send(_repository.GetMailInfo(), newClient));

but I was wondering whether that is the right solution.

I once read about putting items on a queue and those were called ‘commands’, and they were classes especially created to wrap a task/command/thing-to-do and put it on a queue.

So for the notify the crm connector this would then be

client.Enqueue(() => new CrmNotifyCommand(newClient).Execute();

The CrmNotifyCommand would then receive the new client and have the knowledge to execute _crmConnector.notify(newClient).

In this case all items that are put on the queue (executed by HangFire) would be wrapped in a ‘command’.
Such a command would then be a self containing class which knows how to execute a kind of business functionality. When the command itself uses more than 1 other class it could also be known as a facade I guess.

What do you think about such an architecture?

(or is this not a question for this forum)