protected Map<String, List<String>> initProcessLists(List<RabbitmqClusterContext> contextList)
            throws RabbitmqCommunicateException
    {
        if (this.contextMap == null)
        {
            this.contextMap = initContextMap(contextList);
        }

        Map<String, List<String>> processLists = new HashMap<String, List<String>>();

        LinkedList<String> processList = null;
        String connectionProcess = null;
        int processIndex = 0;

        for (String queueName : this.contextMap.keySet())
        {
            //エンティティ内のインスタンスを変更しないよう、ディープコピーする。
            RabbitmqClusterContext context = this.contextMap.get(queueName);
            processList = new LinkedList<String>(context.getMqProcessList());

            //接続先RabbitMQプロセスが何番目に定義されているかを確認する。
            //デフォルトでは先頭(0)
            processIndex = 0;
            connectionProcess = context.getConnectionProcessMap().get(getClientId(queueName));
            if (connectionProcess != null)
            {
                processIndex = processList.indexOf(connectionProcess);
            }

            //接続先RabbitMQプロセスが先頭となるよう、RabbitMQプロセス一覧を並び替える。
            LinkedList<String> backwardProcesses = new LinkedList<String>(processList.subList(0,
                    processIndex));
            LinkedList<String> forwardProcesses = new LinkedList<String>(processList.subList(
                    processIndex, processList.size()));
            forwardProcesses.addAll(backwardProcesses);
            processList = new LinkedList<String>(forwardProcesses);

            processLists.put(queueName, processList);
        }

        return processLists;
    }
protected Map < String , List < String > > initProcessLists ( List < RabbitmqClusterContext > contextList ) throws RabbitmqCommunicateException { if ( this . contextMap == null ) { this . contextMap = initContextMap ( contextList ) ; } Map < String , List < String > > processLists = new HashMap < String , List < String > > ( ) ; LinkedList < String > processList = null ; String connectionProcess = null ; int processIndex = 0 ; for ( String queueName : this . contextMap . keySet ( ) ) { RabbitmqClusterContext context = this . contextMap . get ( queueName ) ; processList = new LinkedList < String > ( context . getMqProcessList ( ) ) ; processIndex = 0 ; connectionProcess = context . getConnectionProcessMap ( ) . get ( getClientId ( queueName ) ) ; if ( connectionProcess != null ) { processIndex = processList . indexOf ( connectionProcess ) ; } LinkedList < String > backwardProcesses = new LinkedList < String > ( processList . subList ( 0 , processIndex ) ) ; LinkedList < String > forwardProcesses = new LinkedList < String > ( processList . subList ( processIndex , processList . size ( ) ) ) ; forwardProcesses . addAll ( backwardProcesses ) ; processList = new LinkedList < String > ( forwardProcesses ) ; processLists . put ( queueName , processList ) ; } return processLists ; }
フェイルオーバで接続する順番にした状態の、キューを保持するクラスタのRabbitMQプロセス一覧を生成する。

@param contextList クラスタ構成定義一覧
@return RabbitMQプロセス一覧
@throws RabbitmqCommunicateException 定義したキュー名が一意でない場合