2014-04-21 1 views
0

gridgain 4에서 gridgain 6으로 우리의 코드베이스를 이식하려고 할 때 또 다른 문제가 있습니다. 어쨌든, 그리드 이벤트 감지시 특정 동작을 수행하기 위해 청취자 중 한 명을 연결하는 것이 목적입니다 EVT_NODE_JOINED)Gridgain Notify Listener가 GridEvent에서 작동하지 않습니다. 구성해야하는 항목은 무엇입니까?

이전 코드에서는이 xml 코드 단편에 설명 된대로 리스너 (gridNodeMonitor)에서 와이어 처리했습니다. 새로운 코드에서

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

답변

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와 함께 제공되는 이벤트의 예를 살펴해야 :

+0

예, 본인은 리튬으로 꺾어 리스너를 추가 않았다 fecycle. 좀 더 디버그하려고 노력할 것이다. '개인 무효 registerGridEventListener() { 그리드(). 이벤트(). localListen (새 GridPredicate () { @Override 공공 부울 (GridEvent gridEvent를 적용) { // 노드 모니터를 등록 모니터().의 onEvent (gridEvent)는 true 반환; } }, GridEventType.EVT_NODE_JOINED, ..... 는) 를 GridEventType.EVT_NODE_RECONNECTED; }' –

+0

수정 됨. 이전에 리스너를 구현 한 bean "gridNodeMonitor"는 localEventListeners 속성이 더 이상 존재하지 않기 때문에 특정 컨텍스트에서 더 이상 등록되지 않았습니다. 리스너를 impl에 연결하여 리스너를 초기화하기로 결정했습니다. GridLifecycleBean.onLifecycleEvent (AFTER_GRID_START) 메소드에 대한 설명입니다. 감사합니다. –

관련 문제