1

现在写我有一个情况。我正在编写一个自定义调解器,它实现返回布尔值的调解函数。但相反,我也想返回其他数据类型。我试图通过编写自定义代码来添加两个数字并返回结果来实现 thsi。但我不知道如何返回整数而不是布尔值。请给我一个与这种情况相关的例子。我在自定义类调解器中编写了代码:

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

AFAIK 你不能让类调解器返回布尔值以外的任何东西。类中介,在扩展AbstractMediator类时,必须实现布尔中介方法;正如你所指出的。

您可以尝试将属性设置为 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;
    }

在上面的示例中,两个字符串变量最终将具有相同的值“aProperty”。通过这种方式,您可以向 Synapse 消息上下文公开任何类型的对象并在其他地方检索它。

于 2013-04-01T11:02:29.707 回答