diff --git a/reactive-test/pom.xml b/reactive-test/pom.xml
new file mode 100644
index 00000000..6bfe835f
--- /dev/null
+++ b/reactive-test/pom.xml
@@ -0,0 +1,24 @@
+
+
+ 4.0.0
+
+ org.example
+ reactive-test
+ 1.0-SNAPSHOT
+
+
+
+ org.reactivestreams
+ reactive-streams
+ 1.0.3
+
+
+
+
+ 11
+ 11
+
+
+
\ No newline at end of file
diff --git a/reactive-test/src/main/java/Application.java b/reactive-test/src/main/java/Application.java
new file mode 100644
index 00000000..289d6903
--- /dev/null
+++ b/reactive-test/src/main/java/Application.java
@@ -0,0 +1,8 @@
+public class Application {
+ public static void main(String[] args) {
+ MyPublisher publisher = new MyPublisher();
+ MySubscriber subscriber = new MySubscriber();
+
+ publisher.subscribe(subscriber);
+ }
+}
diff --git a/reactive-test/src/main/java/MyPublisher.java b/reactive-test/src/main/java/MyPublisher.java
new file mode 100644
index 00000000..55839419
--- /dev/null
+++ b/reactive-test/src/main/java/MyPublisher.java
@@ -0,0 +1,18 @@
+import org.reactivestreams.Publisher;
+import org.reactivestreams.Subscriber;
+
+import java.util.Arrays;
+
+public class MyPublisher implements Publisher {
+
+ Iterable its = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
+
+ @Override
+ public void subscribe(Subscriber super Integer> subscriber) {
+ System.out.println("구독 신청");
+ System.out.println("구독 정보 생성");
+ MySubscription subscription = new MySubscription(subscriber, its);
+ System.out.println("구독 정보 생성완료");
+ subscriber.onSubscribe(subscription);
+ }
+}
diff --git a/reactive-test/src/main/java/MySubscriber.java b/reactive-test/src/main/java/MySubscriber.java
new file mode 100644
index 00000000..9914335e
--- /dev/null
+++ b/reactive-test/src/main/java/MySubscriber.java
@@ -0,0 +1,37 @@
+import org.reactivestreams.Subscriber;
+import org.reactivestreams.Subscription;
+
+public class MySubscriber implements Subscriber {
+
+ private Subscription s;
+ private final int SIZE = 5;
+ private int bufferSize = SIZE;
+
+ @Override
+ public void onSubscribe(Subscription subscription) {
+ System.out.println("구독 정보 받음");
+ this.s = subscription;
+ s.request(bufferSize); // 요청 개수
+ }
+
+ @Override
+ public void onNext(Integer integer) {
+ System.out.println("구독 데이터 전달 : " + integer);
+ bufferSize--;
+ if (bufferSize == 0) {
+ System.out.println("하루 지남");
+ bufferSize = SIZE;
+ s.request(bufferSize);
+ }
+ }
+
+ @Override
+ public void onError(Throwable throwable) {
+ System.out.println("구독 에러");
+ }
+
+ @Override
+ public void onComplete() {
+ System.out.println("구독 완료");
+ }
+}
diff --git a/reactive-test/src/main/java/MySubscription.java b/reactive-test/src/main/java/MySubscription.java
new file mode 100644
index 00000000..73dc968e
--- /dev/null
+++ b/reactive-test/src/main/java/MySubscription.java
@@ -0,0 +1,33 @@
+import org.reactivestreams.Subscriber;
+import org.reactivestreams.Subscription;
+
+import java.util.Iterator;
+
+public class MySubscription implements Subscription {
+
+ private Subscriber s;
+ private Iterator it;
+
+ public MySubscription(Subscriber s, Iterable it) {
+ this.s = s;
+ this.it = it.iterator();
+ }
+
+ @Override
+ public void request(long l) {
+ while(l > 0) {
+ if (it.hasNext()) {
+ s.onNext(it.next());
+ } else {
+ s.onComplete();
+ break;
+ }
+ l--;
+ }
+ }
+
+ @Override
+ public void cancel() {
+
+ }
+}
diff --git a/webflux/src/main/java/com/example/webflux/MyFilterConfig.java b/webflux/src/main/java/com/example/webflux/MyFilterConfig.java
index 097c7ce4..df23d35f 100644
--- a/webflux/src/main/java/com/example/webflux/MyFilterConfig.java
+++ b/webflux/src/main/java/com/example/webflux/MyFilterConfig.java
@@ -16,7 +16,7 @@ public class MyFilterConfig {
@Bean
public FilterRegistrationBean addFilter() {
FilterRegistrationBean bean = new FilterRegistrationBean<>(new MyFilter(eventNotify));
- bean.addUrlPatterns("/*");
+ bean.addUrlPatterns("/sse");
return bean;
}
@Bean