Handling messages
At some point you'll want to handle messages that have been sent to your application. This can be done by creating a handler and registering it with the BusConfiguration.
The following example creates a handler for a hotel booking application
Declare a command that models the ReserveRoom command
// reserve-room.ts
import { Command } from '@node-ts/bus-messages'
export class ReserveRoom extends Command {
$name = 'reservations/reserve-room'
$version = 0
constructor (
readonly roomId: string,
readonly bookingId: string
) {
super()
}
}
Create a handler that receives a command to ReserveRoom
that it delegates the operation to a reservationService
.
// reserve-room-handler.ts
import { handlerFor } from '@node-ts/bus-core'
import { ReserveRoom } from '../messages'
import { reservationService } from '../services'
export const reserveRoomHandler = handlerFor(
ReserveRoom,
command => reservationService.reserveRoom(command.reservation, command.bookingId)
)
Register the handler with the BusConfiguration.
// application.ts
import { Bus, BusInstance } from '@node-ts/bus-core'
import { reserveRoomHandler } from './handlers'
import { ReserveRoom } from './messages'
let bus: BusInstance
const start = async () => {
bus = await Bus.configure()
.withHandler(reserveRoomHandler)
.initialize()
// Start the bus to commence processing messages
await bus.start()
}
start
.then(async () => bus.send(new ReserveRoom(
'63a65cf0-d239-4b83-96da-f33f013db23a',
'12b85a56-e929-47a8-9ac3-e87739d5d215'
))
.catch(console.error)
Last updated
Was this helpful?