1 package com.reallifedeveloper.common.application.notification; 2 3 import java.io.IOException; 4 import java.util.List; 5 6 /** 7 * A publisher of notifications. 8 * <p> 9 * An implementation of this interface normally uses a messaging system to publish messages containing information about the notifications. 10 * In this case, the <i>publicationChannel</i> that is used by the {@link #publish(List, String)} method would correspond to an exchange 11 * name. 12 * 13 * @author RealLifeDeveloper 14 */ 15 @FunctionalInterface 16 public interface NotificationPublisher { 17 18 /** 19 * Publishes a number of notifications to the given publication channel. 20 * 21 * @param notifications a list of {@code Notifications} to publish 22 * @param publicationChannel the name of the publication channel 23 * 24 * @throws IOException if publishing failed 25 */ 26 void publish(List<Notification> notifications, String publicationChannel) throws IOException; 27 28 }