如果我有一个以 JMS 代理作为主要输入的分布式 CEP 设置。
现在,如果我们告诉我们的客户端应用程序向主题 X 发送事件,这些事件将被分发到 CEP 集群中的每个节点,因为每个节点都将监听同一个主题 X。这会导致结果重复(假设我正在计算某些数据字段,现在由于每个节点都在接收重复数据,如果我有一个 2 节点集群,我的计数是否会是实际值的两倍)
CEP 可以使用 JMS 队列而不是主题吗?这样,哪个节点首先获取事件数据将消耗队列中的消息?WSO2 CEP 是否支持 JMS 队列?
如果我有一个以 JMS 代理作为主要输入的分布式 CEP 设置。
现在,如果我们告诉我们的客户端应用程序向主题 X 发送事件,这些事件将被分发到 CEP 集群中的每个节点,因为每个节点都将监听同一个主题 X。这会导致结果重复(假设我正在计算某些数据字段,现在由于每个节点都在接收重复数据,如果我有一个 2 节点集群,我的计数是否会是实际值的两倍)
CEP 可以使用 JMS 队列而不是主题吗?这样,哪个节点首先获取事件数据将消耗队列中的消息?WSO2 CEP 是否支持 JMS 队列?
不,目前 (CEP 2.0.1) 不支持从 JMS 队列接收事件。但如果这是您的要求,那么您可以编写自己的 CEP addeptor(broker) 来接收来自队列的事件并将其推送到 CEP。
创建自定义代理
通过扩展 org.wso2.carbon.broker.core.BrokerType 来创建适当的代理类型,并通过从 jar org.wso2.carbon.broker.core 扩展 org.wso2.carbon.broker.core.BrokerTypeFactory 来创建适当的代理类型工厂-4.0.5.jar
然后使用 CEP 配置该代理,在 wso2cep-2.0.1/repository/conf 中创建一个名为“broker.xml”的文件并添加以下 XML:
<brokerTypes xmlns="http://wso2.org/carbon/broker">
<brokerType class="<<class reference>>" /> ...
</brokerTypes>
在http://suhothayan.blogspot.com/2013/02/writing-custom-broker-for-wso2-cep.html找到有关创建定制代理的详细文档