在Coldfusion事件网关中订阅多个ActiveMQ主题

在Coldfusion事件网关中订阅多个ActiveMQ主题,coldfusion,jms,activemq,jndi,event-gateway,Coldfusion,Jms,Activemq,Jndi,Event Gateway,我想知道是否可以使用Coldfusion示例ActiveMQ事件网关订阅多个主题 目前我可以设置 destinationName=dynamicTopics/topic1 然而,我假设我可以设置某种复合目的地 destinationName=dynamicTopics/topic1,topic2 或 这似乎不起作用。这是不可能的开箱即用,还是我遗漏了一些关于JNDI如何工作的信息 显然,替代方案是创建多个事件网关,但我一点也不喜欢这个想法 此外,在onIncomingMessage处理程序中

我想知道是否可以使用Coldfusion示例ActiveMQ事件网关订阅多个主题

目前我可以设置

destinationName=dynamicTopics/topic1
然而,我假设我可以设置某种复合目的地

destinationName=dynamicTopics/topic1,topic2

这似乎不起作用。这是不可能的开箱即用,还是我遗漏了一些关于JNDI如何工作的信息

显然,替代方案是创建多个事件网关,但我一点也不喜欢这个想法


此外,在onIncomingMessage处理程序中访问传入消息的主题名称也很重要。我在单个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中提取代码的好处是,它可以在独立的CFC中实现,该CFC可以使用类似MxUnit或TestBox的东西单独进行单元测试

<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>