1

今書く私は状況があります。ブール値を返す mediate 関数を実装するカスタム メディエーターを作成しています。しかし、代わりに他のデータ型も返したいと思っています。2 つの数値を加算して結果を返すカスタム コードを記述して、これを達成しようとしています。しかし、ブール値ではなく整数を返す方法を理解できません。この状況に関連する例を教えてください。カスタムクラスメディエーター内のコードを次のように記述しました。

public boolean mediate(MessageContext messageContext) {
        System.out.println("Checkpoint1: OpenPublication.mediate()");
        if (getChanneluri() != null && !getChanneluri().isEmpty()) {
            messageContext.setProperty("SessionID", UUID.randomUUID().toString());
            System.out.println("Checkpoint2: SessionID Property set");
            synapseConfig = messageContext.getConfiguration();
            System.out.println("Checkpoint3: messageContextSessionID = " + messageContext.getProperty("SessionID"));
            System.out.println("Checkpoint3: messageID = " + messageContext.getMessageID());
                    }
        return false;
    }

ここで、シーケンスで「SessionID」のこのプロパティ値を取得したいと思います。これを行う方法。前もって感謝します。

4

1 に答える 1

4

私の知る限り、クラスメディエーターにブール値以外のものを返すようにすることはできません。クラス メディエータは、AbstractMediatorクラスを拡張するときに、ブール値の mediate メソッドを実装する必要があります。ご指摘のとおりです。

Synapse メッセージ コンテキストにプロパティを設定して、異なるメディエーター間で値を渡すことができます。

例えば:

public class myMediator extends AbstractMediator {

    private String property1 = "aProperty";
    private String property2;

    public boolean mediate(MessageContext messageContext) {

        messageContext.setProperty("MyProperty", property1);
        property2 = (String) messageContext.getProperty("MyProperty");


        return true;
    }

上記の例では、2 つの String 変数が同じ値 "aProperty" を持つことになります。このようにして、任意のタイプのオブジェクトを Synapse メッセージ コンテキストに公開し、別の場所で取得できます。

于 2013-04-01T11:02:29.707 に答える