129.5. DeadEvent 고려 사항


Guava EventBus의 설계로 인한 제한 사항으로 인해 @Subscribe 메서드 주석이 추가된 클래스를 생성하지 않고도 리스너에서 수신하도록 이벤트 클래스를 지정할 수 없습니다. 이 제한은 eventClass 옵션이 지정된 끝점이 실제로 모든 가능한 이벤트(java.lang.Object)를 수신 대기하고 런타임 시 프로그래밍 방식으로 적절한 메시지를 필터링한다는 것을 의미합니다. 아래 요약은 Camel 코드 베이스에서 적절한 발췌를 보여줍니다.

@Subscribe
public void eventReceived(Object event) {
  if (eventClass == null || eventClass.isAssignableFrom(event.getClass())) {
    doEventReceived(event);
...

이 접근 방식의 단점은 Camel에서 사용하는 EventBus 인스턴스가 com.google.common.eventbus.DeadEvent 알림을 생성하지 않는다는 것입니다. Camel이 정확히 지정된 이벤트만 수신 대기하고 DeadEvent 지원을 활성화하려면 listenerInterface 엔드포인트 옵션을 사용합니다. Camel은 후자 옵션으로 지정하는 인터페이스를 통해 동적 프록시를 생성하고 인터페이스 처리기 메서드에서 지정한 메시지만 수신합니다. 특정 인스턴스만 처리하는 단일 메서드를 사용하는 리스너 인터페이스의 예는 다음과 같습니다.

package com.example;

public interface CustomListener {

  @Subscribe
  void eventReceived(SpecificEvent event);

}

위에 표시된 리스너는 다음과 같이 끝점 정의에서 사용할 수 있습니다.

from("guava-eventbus:busName?listenerInterface=com.example.CustomListener").to("seda:queue");
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.