# Example: Publish Events with a Callback Instance

To invoke the callback, perform an `EventBus.publish` call by passing it an instance of the `FailureCallback` class. You can publish one event or a batch of events with the callback.

This example publishes two event messages. This example requires a platform event, `Order Event`, to be defined with a Text(18) field of `Order Id`. To view debug logs for the `FailureCallback` class, make sure that you set up user trace flags for the Automated Process user. For more information, see [Callback Running User and Debug Logs](/docs/platform/platform-events/guide/platform-events-publish-callback-user.md). In this case, if all publishing is successful, the `onFailure()` method isn’t invoked.

```apex
List<Order_Event__e> eventList = new List<Order_Event__e>();

// Create event objects with prepopulated EventUuid fields.
Order_Event__e event1 = (Order_Event__e)Order_Event__e.sObjectType.newSObject(null, true);
event1.Order_Id__c='Order1 ID';
System.debug('event1 EventUuid: ' + event1.EventUuid);


Order_Event__e event2 = (Order_Event__e)Order_Event__e.sObjectType.newSObject(null, true);
event2.Order_Id__c='Order2 ID';
System.debug('event2 EventUuid: ' + event2.EventUuid);

// Add event objects to the list.
eventList.add(event1);
eventList.add(event2);

// Publish events with an instance of the failure callback.
List<Database.SaveResult> results = EventBus.publish(eventList, new FailureCallback());

// Inspect synchronous publishing result for each event.
for (Database.SaveResult sr : results) {
    if (sr.isSuccess()) {
        System.debug('Successfully published event.');
    } else {
        for(Database.Error err : sr.getErrors()) {
            System.debug('Error returned: ' +
                        err.getStatusCode() +
                        ' - ' +
                        err.getMessage());
        }
    }
}

```
