blob: 77bab9366b072231c5abac84b5d325501b388080 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* 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.
*/
package javax.jbi.messaging;
import javax.jbi.servicedesc.ServiceEndpoint;
import javax.xml.namespace.QName;
/**
* Bi-directional communication channel used to interact with the Normalized
* Message Service.
*
* @author JSR208 Expert Group
*/
public interface DeliveryChannel
{
/**
* Closes the delivery channel, halting all message traffic.
*
* @throws MessagingException fatal error while closing channel.
*/
void close() throws MessagingException;
/**
* Create a message exchange factory. This factory will create exchange
* instances with all appropriate properties set to null.
*
* @return a message exchange factory
*/
MessageExchangeFactory createExchangeFactory();
/**
* Create a message exchange factory for the given interface name.
*
* @param interfaceName name of the interface for which all exchanges
* created by the returned factory will be set
* @return an exchange factory that will create exchanges for the given
* interface; must be non-null
*/
MessageExchangeFactory createExchangeFactory(QName interfaceName);
/**
* Create a message exchange factory for the given service name.
*
* @param serviceName name of the service for which all exchanges
* created by the returned factory will be set
* @return an exchange factory that will create exchanges for the given
* service; must be non-null
*/
MessageExchangeFactory createExchangeFactoryForService(QName serviceName);
/**
* Create a message exchange factory for the given endpoint.
*
* @param endpoint endpoint for which all exchanges created by the
* returned factory will be set for
* @return an exchange factory that will create exchanges for the
* given endpoint
*/
MessageExchangeFactory createExchangeFactory(ServiceEndpoint endpoint);
/**
* Blocking call used to service a MessageExchange instance which has
* been initiated by another component. This method supports concurrent
* invocation for multi-threaded environments.
*
* @return mesage exchange instance
* @throws MessagingException failed to accept
*/
MessageExchange accept() throws MessagingException;
/**
* Identical to accept(), but returns after specified interval even if
* a message exchange is unavailable.
*
* @param timeout time to wait in milliseconds
* @return mesage exchange instance or null if timeout is reached
* @throws MessagingException failed to accept
*/
MessageExchange accept(long timeout) throws MessagingException;
/**
* Routes a MessageExchange instance through the Normalized Message Service
* to the appropriate servicing component. This method supports concurrent
* invocation for multi-threaded environments.
*
* @param exchange message exchange to send
* @throws MessagingException unable to send exchange
*/
void send(MessageExchange exchange) throws MessagingException;
/**
* Routes a MessageExchange instance through the Normalized Message Service
* to the appropriate servicing component, blocking until the exchange is
* returned. This method supports concurrent invocation for multi-threaded
* environments.
*
* @param exchange message exchange to send
* @return true if the exchange has been processed and returned by the
* servicing component, false otherwise.
* @throws MessagingException unable to send exchange
*/
boolean sendSync(MessageExchange exchange) throws MessagingException;
/**
* Routes a MessageExchange instance through the Normalized Message Service
* to the appropriate servicing component, blocking until the specified
* timeout is reached. This method supports concurrent invocation for
* multi-threaded environments.
*
* @param exchange message exchange to send
* @param timeout time to wait in milliseconds
* @return true if the exchange has been processed and returned by the
* servicing component, false in the case of timeout.
* @throws MessagingException unable to send exchange
*/
boolean sendSync(MessageExchange exchange, long timeout) throws MessagingException;
}