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

标签 coldfusion jms activemq jndi event-gateway

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

目前我可以设置

destinationName=dynamicTopics/topic1

但是我会假设我可以设置某种复合目标

destinationName=dynamicTopics/topic1,topic2

destinationName=dynamicTopics/topic1,dynamicTopics/topic2

这似乎行不通。开箱即用是不可能的,还是我遗漏了一些有关 JNDI 工作原理的信息?

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

此外,在 onIncomingMessage 处理程序中访问传入消息的主题名称也很重要

最佳答案

我在单个 ActiveMQ 事件网关中容纳多个目的地的方法是使用“操作”作为我的限定符。我没有多个队列或主题,而是将目标包含在我的有效负载中,例如:

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

然后在 onIncomingMessage 中,我根据操作进行 fork :

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

并且我根据需要使用私有(private)方法来实现每个例程。从 onIncomingMessage 中提取代码的好处是,它可以在独立的 CFC 中实现,可以使用 MxUnit 或 TestBox 等工具自行进行单元测试。

关于coldfusion - 在 Coldfusion 事件网关中订阅多个 ActiveMQ 主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34300650/

相关文章:

regex - 与正则表达式逻辑作斗争 : how do I remove a param from a url query string?

coldfusion - 点和方括号表示法在 CF 中的行为不应该相同吗?

math - 如何在 ColdFusion 中锻炼 Haversine 公式

java - 如何从 java 组件发送不同的有效载荷?

java - 无法将消息推送到 ActiveMQ

javascript - 是否可以在CF代码中使用console.log

JMS/DDS 集成

java - HornetQ:从队列中删除所有消息,不适用于队列中的消费者

java - 寻址未知服务器 ActiveMQ 时连接停止

c# - 并行消费来自一个队列的消息