/*
*
* * Licensed to the Apache Software Foundation (ASF) under one or more
* * contributor license agreements. The ASF licenses this file to You
* * under the Apache License, Version 2.0 (the "License"); you may not
* * use this file except in compliance with the License.
* * You may obtain a copy of the License at
* *
* * http://www.apache.org/licenses/LICENSE-2.0
* *
* * Unless required by applicable law or agreed to in writing, software
* * distributed under the License is distributed on an "AS IS" BASIS,
* * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* * See the License for the specific language governing permissions and
* * limitations under the License. For additional information regarding
* * copyright in this work, please see the NOTICE file in the top level
* * directory of this distribution.
*
*/
package org.apache.usergrid.services.notifications;
import org.apache.usergrid.batch.JobExecution;
import org.apache.usergrid.persistence.entities.Notification;
import org.apache.usergrid.persistence.queue.LegacyQueueMessage;
import rx.Observable;
import java.util.List;
/**
* Manages Queues for Applications
*/
public interface ApplicationQueueManager {
String DEFAULT_QUEUE_PROPERTY = "usergrid.notifications.listener.queue";
String NOTIFIER_ID_POSTFIX = ".notifier.id";
String DEFAULT_QUEUE_NAME = "push"; //keep this short as AWS limits queue name size to 80 chars
/**
* send notification to queue
*
* @param notification
* @param jobExecution
* @throws Exception
*/
void queueNotification(Notification notification, JobExecution jobExecution) throws Exception;
/**
* send notifications to providers
*
* @param messages
* @param queuePath
* @return
*/
Observable sendBatchToProviders(List<LegacyQueueMessage> messages, String queuePath);
/**
* stop processing and send message to providers to stop
*/
void stop();
/**
* check for inactive devices, apple and google require this
*
* @throws Exception
*/
void asyncCheckForInactiveDevices() throws Exception;
}