0

这是我在尝试将我们的代码库从 gridgain 4 移植到 gridgain 6 时遇到的另一个问题。无论如何,目的是连接我们的一个侦听器以在检测到网格事件(例如 EVT_NODE_JOINED)时执行某些操作

在旧代码中,我们连接到我们的侦听器 (gridNodeMonitor),如该 xml 片段所述。

<beans profile="master">
    <bean class="org.gridgain.grid.GridSpringBean">
        <property name="configuration">
            <bean parent="abstractGridConfiguration">
                <property name="userAttributes">
                    <map merge="true">
                        <entry key="com.mycompany.master" value="true"/>
                    </map>
                </property>
                <property name="lifecycleBeans">
                    <list>
                        <ref bean="gridNodeMonitor"/>
                    </list>
                </property>
                <property name="localEventListeners">
                    <map>
                        <entry key-ref="gridNodeMonitor">
                            <list>
                                <util:constant static-field="org.gridgain.grid.GridEventType.EVT_NODE_JOINED"/>
                                <util:constant static-field="org.gridgain.grid.GridEventType.EVT_NODE_LEFT"/>
                                <util:constant static-field="org.gridgain.grid.GridEventType.EVT_NODE_FAILED"/>
                                <util:constant static-field="org.gridgain.grid.GridEventType.EVT_NODE_RECONNECTED"/>
                            </list>
                        </entry>
                    </map>
                </property>
                <property name="topologySpi">
                    <bean class="org.gridgain.grid.spi.topology.nodefilter.GridNodeFilterTopologySpi">
                        <property name="filter">
                            <bean class="com.mycompany.enterprise.gridgain.license.GridNodeMonitorImpl"
                                  factory-method="createTopologyFilter">
                                <constructor-arg ref="gridNodeMonitor"/>
                            </bean>
                        </property>
                    </bean>
                </property>
                <property name="cacheConfiguration">
                    <bean class="org.gridgain.grid.cache.GridCacheConfigurationAdapter"/>
                </property>
            </bean>
        </property>
    </bean>
</beans>

在新代码中,配置架构已更改,这就是我将其移植到的内容(localEventListener 不再是有效属性)。我猜我的问题是我没有指定监听器来监视事件。我应该如何配置这个?我应该注意,在任何情况下,GridGain 都能正常工作,即作业被分配到正确的节点,只是没有正确注册的侦听器。

谢谢

<beans profile="master">
    <bean class="org.gridgain.grid.GridSpringBean">
        <property name="configuration">
            <bean parent="abstractGridConfiguration">
                <property name="userAttributes">
                    <map merge="true">
                        <entry key="com.mycompany.master" value="true"/>
                    </map>
                </property>
                <property name="lifecycleBeans">
                    <list>
                        <ref bean="gridNodeMonitor"/>
                    </list>
                </property>
                <property name="includeEventTypes">
                    <list>
                        <util:constant static-field="org.gridgain.grid.events.GridEventType.EVT_NODE_JOINED"/>
                        <util:constant static-field="org.gridgain.grid.events.GridEventType.EVT_NODE_LEFT"/>
                        <util:constant static-field="org.gridgain.grid.events.GridEventType.EVT_NODE_FAILED"/>
                        <util:constant static-field="org.gridgain.grid.events.GridEventType.EVT_NODE_RECONNECTED"/>
                    </list>
                </property>
                <property name="cacheConfiguration">
                    <bean class="org.gridgain.grid.cache.GridCacheConfiguration"/>
                </property>
            </bean>
        </property>
    </bean>
</beans>
4

1 回答 1

1

你的配置对我来说是正确的。您是否在代码中添加了侦听器,如下所示:

GridPredicate<GridTaskEvent> lsnr = new GridPredicate<GridTaskEvent>() {
    @Override public boolean apply(GridTaskEvent evt) {
        // Process event.
        ...

        return true; // Return true to continue listening.
    }
};

// Register event listener for all local task execution events.
g.events().localListen(lsnr, EVTS_TASK_EXECUTION);

此外,您应该查看 GridGain 附带的事件示例:

于 2014-04-21T19:04:59.623 回答