}
} catch (IOException e) {
if (isTransactional) {
tryRollback(channel);
}
throw new EventPublicationFailedException("Failed to dispatch Events to the Message Broker.", e);
} catch (ShutdownSignalException e) {
throw new EventPublicationFailedException("Failed to dispatch Events to the Message Broker.", e);
} catch (InterruptedException e) {
logger.warn("Interrupt received when waiting for message confirms.");
Thread.currentThread().interrupt();
} finally {
if (!CurrentUnitOfWork.isStarted()) {