3

Coldfusion サンプルの ActiveMQ イベント ゲートウェイを使用して、複数のトピックをサブスクライブできるかどうか疑問に思っていました。

現在、私は設定することができます

destinationName=dynamicTopics/topic1

ただし、ある種の複合宛先を設定できると想定していました

destinationName=dynamicTopics/topic1,topic2

また

destinationName=dynamicTopics/topic1,dynamicTopics/topic2

これはうまくいかないようです。これはそのままでは不可能ですか、それとも JNDI の仕組みについて何か不足していますか?

明らかに別の方法として、複数のイベント ゲートウェイを作成しますが、私はその考えがまったく好きではありません。

また、 onIncomingMessageハンドラーで着信メッセージのトピック名にアクセスできることも重要です。

4

1 に答える 1

1

単一の ActiveMQ イベント ゲートウェイで複数の宛先に対応する方法は、修飾子として「アクション」を使用することです。複数のキューやトピックを用意する代わりに、次のようにペイロードにターゲットを含めます。

payload = {action: "notify", foo: "bar"};
sendGatewayMessage('gw', {status = "SEND",
                          topic="dynamicTopics/sync", 
                          message = serializeJson(payload)});

次に、onIncomingMessage で、アクションに基づいてフォークします。

<cffunction name="onIncomingMessage">
    <cfargument name="event" type="struct" required="true" />

    <cfset var msg = deserializeJson(arguments.event.data.msg) />

    <cfif msg.action EQ "verify">
        <cfset verify(argumentCollection = msg) />
    <cfelseif msg.action EQ "notify">
        <cfset notify(argumentCollection = msg) />
    </cfif>

</cffunction>

そして、プライベート メソッドを使用して、必要に応じて各ルーチンを実装します。コードを onIncomingMessage から引き出すことの利点は、MxUnit や TestBox などを使用して単独で単体テストできるスタンドアロン CFC に実装できることです。

于 2016-05-04T03:44:48.107 に答える