class DomainMessageService {

    public void sendAsynchron(DomainMessage request) {
        assertRequestNotNull(request);

        int inspectionId = eventInspector.createInspectionId();
        eventInspector.inspectSendAsynchron(request, inspectionId);

        MessageID messageID = request.getMessageId();
        List<AsynchronMessageHandler> handlersForThisMessageId = asynchronHandlers.get(messageID);

        if (handlersForThisMessageId == null || handlersForThisMessageId.isEmpty()) {
            /* handle problem async way by logging */
            LOG.error("Domain request with message id:{}, not handled by any asynchronous handler!", messageID);
            return;
        }

        for (AsynchronMessageHandler handler : handlersForThisMessageId) {
            taskExecutor.execute(new AsynchronMessageHandlerTaskAdapter(handler, inspectionId, request));
        }

    }

    @Autowired // does auto registration of synchron message handlers by spring public  DomainMessageService(List<SynchronMessageHandler> injectedSynchronousHandlers, List<AsynchronMessageHandler> injectedAsynchronousHandlers);

}