Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mule ESB:在不同的流中生成相同的动态关联ID_Mule_Esb_Correlation - Fatal编程技术网

Mule ESB:在不同的流中生成相同的动态关联ID

Mule ESB:在不同的流中生成相同的动态关联ID,mule,esb,correlation,Mule,Esb,Correlation,目前我正在使用Mule ESB。现在,我有两个流,比如说流1和流2。我需要做的是在不同的流中生成相同的关联ID。相关性ID本身的值应该是动态的。我的意思是,第一次运行程序时的相关ID和第二次运行程序时的相关ID应该不同 例如:当我向入站发送第一个请求时,相关ID为abcdef(在流1和流2中),然后在第一个请求完成后,我发送第二个请求,第二个请求的相关ID为:xyz123455(在流1和流2中) 如何做到这一点?提前感谢您可以在一个流中动态生成相关ID(比如说UUIDclass),将其存储为会话

目前我正在使用Mule ESB。现在,我有两个流,比如说流1和流2。我需要做的是在不同的流中生成相同的关联ID。相关性ID本身的值应该是动态的。我的意思是,第一次运行程序时的相关ID和第二次运行程序时的相关ID应该不同

例如:当我向入站发送第一个请求时,相关ID为abcdef(在流1和流2中),然后在第一个请求完成后,我发送第二个请求,第二个请求的相关ID为:xyz123455(在流1和流2中)


如何做到这一点?提前感谢

您可以在一个流中动态生成相关ID(比如说
UUID
class),将其存储为会话变量并在另一个流中使用。

简单解决方案:-只需将动态生成的相关ID存储在会话变量中,并在需要相同相关ID的另一个流中提取会话变量的值

无需执行任何特定操作来传播流之间的关联ID:Mule为您做这件事。此外,Mule为每个入站消息生成一个唯一的ID,因此您可以将其用作关联ID

以下是一个例子:

<flow name="firstFlow">
    <http:inbound-endpoint address="http://localhost:8080/test" />

    <!-- No correlation ID yet -->
    <logger level="INFO" message="CID: #[message.correlationId]" />

    <!-- Use the message unique ID as its correlation ID -->
    <set-property propertyName="MULE_CORRELATION_ID" value="#[message.id]" />

    <!-- Correlation ID is set -->
    <logger level="INFO" message="CID: #[message.correlationId]" />

    <vm:outbound-endpoint path="second.flow" />
</flow>

<flow name="secondFlow">
    <vm:inbound-endpoint path="second.flow" />

    <!-- Correlation ID is propagated -->
    <logger level="INFO" message="CID: #[message.correlationId]" />
</flow>

正如您所见,相关ID是自动传播的。

问题是,我不想使用vm。我的第二个流的入站端点是wmq。第一个流的端点的出站是另一个wmq。第一流和第二流中的wmq都不同。第一个流中的出站wmq(wmq A)用于写入,第二个流中的入站wmq(wmq B)仅用于读取。问题是,我不想使用vm。我的第二个流的入站端点是wmq。第一个流的端点的出站是另一个wmq。第一流和第二流中的wmq都不同。第一个流中的出站wmq(wmq A)用于写入,第二个流中的入站wmq(wmq B)仅用于读取。您最初的问题没有提到这一点。在这方面,我相信我的回答是可以接受的。就WMQ而言,任何接收消息并响应消息的人都可以将相关ID携带到响应消息中。Mule将把相关性放在标准的
JMSCorrelationId
message属性中。问题是,我不想使用vm。我的第二个流的入站端点是wmq。第一个流的端点的出站是另一个wmq。第一流和第二流中的wmq都不同。第一个流中的出站wmq(wmq A)用于写入,第二个流中的入站wmq(wmq B)仅用于读取。@Anirban Sen Chowdhary您的答案与我的答案相比如何增加更多的值或不同?抱歉。。我还没有看到你的答案,而张贴我的。。。请忽略
09:18:58,824 INFO connector.http.mule.default.receiver.02 [org.mule.api.processor.LoggerMessageProcessor] CID: null
09:18:58,831 INFO  connector.http.mule.default.receiver.02 [org.mule.api.processor.LoggerMessageProcessor] CID: 1c51391c-e35f-11e3-926a-9979ff687cfa
09:18:58,847 INFO  connector.http.mule.default.receiver.02 [org.mule.lifecycle.AbstractLifecycleManager] Initialising: 'connector.VM.mule.default.dispatcher.11119625'. Object is: VMMessageDispatcher
09:18:58,848 INFO  connector.http.mule.default.receiver.02 [org.mule.lifecycle.AbstractLifecycleManager] Starting: 'connector.VM.mule.default.dispatcher.11119625'. Object is: VMMessageDispatcher
09:18:58,860 INFO  secondFlow.stage1.02 [org.mule.api.processor.LoggerMessageProcessor] CID: 1c51391c-e35f-11e3-926a-9979ff687cfa