Refer to the Installation section for general installation instructions as well as instructions for your specific provider.
Open up your config/cbq.cfc
file and create your first Queue Connection:
component {
function configure() {
newConnection( "default" )
.setProvider( "ColdBoxAsyncProvider@cbq" );
}
}
Next, create a Worker Pool for your new Queue Connection. This allows our application to work the Jobs we will dispatch.
component {
function configure() {
newConnection( "default" )
.setProvider( "ColdBoxAsyncProvider@cbq" );
newWorkerPool( "default" )
.forConnection( "default" );
}
}
A Job is a CFC that extends cbq.models.Jobs.AbstractJob
. It can live anywhere in your application.
// models/jobs/emails/SendWelcomeEmailJob.cfc
component extends="cbq.models.Jobs.AbstractJob" {
property name="userId";
function handle() {
log.info( "Sending a Welcome email to User ###getUserId()#" );
/* sample code
var user = getInstance( "User" ).findOrFail( getUserId() );
getInstance( "MailService@cbmailservices" )
.newMail(
from = "[email protected]",
to = user.getEmail(),
subject = "Welcome!",
type = "html"
)
.setView( "/_emails/users/welcome" )
.setBodyTokens( {
"firstName" : user.getFirstName(),
"lastName" : user.getLastName()
} )
.send();
*/
}
}
You can create an instance of your Job anywhere in your code — handlers, services, models, etc. Populate it with the specific data needed for this instance.
var job = getInstance( "SendWelcomeEmailJob" );
job.setUserId( newUser.getId() );
Once your Job is created and configured, dispatch
it to the Queue Connection.
job.dispatch();
Check out LogBox to see your Job being executed. Congratulations! You've dispatched your first background Job using cbq!