class MessageBusContainer implements IMessageBusContainer {

    @Override
    public void sendAndReply(final IObject message, final Object replyToChainName)
            throws SendingMessageException {
        try {
            final IMessageBusHandler handler = (IMessageBusHandler) ScopeProvider
                    .getCurrentScope()
                    .getValue(messageBusContainerKey);
            handler.handleForReply(message, replyToChainName);
        } catch (ScopeException e) {
            throw new SendingMessageException("Could not get MessageBusContainer with key: " + messageBusContainerKey + " from the current scope.", e);
        } catch (ScopeProviderException e) {
            throw new SendingMessageException("Could not get current scope.", e);
        } catch (Throwable e) {
            throw new SendingMessageException("Could not send message with a reply to chain " + replyToChainName, e);
        }
    }

    public  MessageBusContainer();

}