[Spring] Event Pub/Sub 기능 예제

ITWeb/개발일반 2021. 3. 3. 11:23

Spring 을 이용해서 간단한 Pub/Sub 기능을 구현 할 수 있는 예제 입니다.

 

관련 Class & Annotation)

ApplicationEventPublisher

@EventListener

 

Pub & Sub 을 위한 Topic Payload)

CustomEventTopicPayload

 

Subscriber Class)

CustomEventSubscriber

 

Code Example)

HelloController : Publisher

@Controller
public class HelloController {

  @Autowired
  ApplicationEventPublisher eventPublisher;

  @GetMapping ("/poc/hello")
  public String hello() {

    eventPublisher.publishEvent(new CustomEventTopicPayload(this, 100));

    return "poc/hello";
  }
}

 

CustomEventSubscriber - Subscriber

@Component
@Log4j2
public class CustomEventSubscriber {

  @EventListener
  public void onEventListener(CustomEventTopicPayload topic) {
    log.debug("{} Topic payload: " + topic.getData(), Thread.currentThread().toString());
  }
}

 

CustomEventTopicPayload - Topic Payload

@Getter
@Setter
public class CustomEventTopicPayload {
  private Object source;
  private int data;

  public CustomEventTopicPayload(Object source) {
    this(source, 0);
  }

  public CustomEventTopicPayload(Object source, int data) {
    this.source = source;
    this.data = data;
  }
}

 

아래 간략한 코드 스니핑은 스프링 4.2 이전 방식 입니다.

public class CustomEventTopicPayload extends ApplicationEvent {}

public class CustomEventSubscriber implements ApplicationListener<CustomEventTopicPayload>{}

 

:

[Spring] 멀티모듈 프로젝트 jar SKIPPED

ITWeb/개발일반 2021. 2. 22. 18:24

intellij community 를 사용하고 있는데 다른 사람은 다 되는게 나만 안되어서 설정을 고쳐서 해결 했습니다.

다른 사람들은 intellij ultimate 사용 하고 있습니다.

 

Multi module web 프로젝트 실행 시 submodule 만 동작해서 원인을 찾아 보고 해결했습니다.

 

원인은)

> Task :base:compileJava UP-TO-DATE
> Task :base:processResources NO-SOURCE
> Task :base:classes UP-TO-DATE
> Task :base:jar SKIPPED
> Task :custom:compileJava UP-TO-DATE
> Task :custom:processResources NO-SOURCE
> Task :custom:classes UP-TO-DATE

 

해결은)

project(":base") {
  jar{
    enabled = true
  }
}

 

근데 왜 나만 저렇게 설정을 해줘야 하는지는 못 찾았습니다.

아시는 분은 제보 좀...

:

[JQuery] Selectors 링크

ITWeb/개발일반 2021. 2. 15. 11:03

https://www.w3schools.com/jquery/jquery_ref_selectors.asp
http://gregfranko.com/jquery-best-practices/#/5

 

저는 주로 id selector 를 사용 합니다.

 

:

[Metricbeat] Module enable/disable.

Elastic/Beats 2021. 2. 15. 10:05

[Enable]
$ ./metricbeat modules enable apache mysql

 

[Disable]
$ ./metricbeat modules disable apache mysql

:

[Elastic] Enterprise Search - App Search JSON Document.

Elastic 2021. 2. 9. 11:30

App Search 에서 JSON Document 색인을 하려다 보니, 에러가 발생을 해서 기록해 둡니다.

Elasticsearch 에서는 문제가 안되는 부분 입니다.

 

Field 명 작성 시 주의 사항)

- lowercase 로 작성이 되어야 합니다.

 

처음 부터 문서 설계 시 lowercase 로 설계 하시기 바랍니다.

이미 대소문자가 섞여 있는 것들에 대한 추가 작업이 필요 한데 왜 안쓰는지 알겠네요.

: