Examples
Mail + Queue Example
Mail and queues are a good example of Netpress lazy loading.
You can keep the request fast, dispatch a job, and let the worker handle the slower side effect.
Job
// app/Jobs/SendWelcomeEmailJob.js
import { BaseJob } from '@admicaa/netpress';
import WelcomeMail from '../Mail/WelcomeMail.js';
export default class SendWelcomeEmailJob extends BaseJob {
static get queue() {
return 'emails';
}
async handle({ user }) {
await new WelcomeMail(user).send(user.email);
}
}
Trigger It From A Service
import User from "../Models/User.js";
import SendWelcomeEmailJob from '../Jobs/SendWelcomeEmailJob.js';
export default class RegistrationService {
static async register(payload) {
const user = await User.create(payload);
await SendWelcomeEmailJob.dispatch({ user });
return user;
}
}
Run The Worker
npm run artisan -- queue:work --queue=emails
Why This Pattern Matters
- the HTTP request stays fast
- the email side effect becomes retryable
- queue infrastructure only boots when you actually use it