Commit 07b7deba authored by Divisha Agarwal's avatar Divisha Agarwal

added log

parent aa9d9fae
package com.nisum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@Slf4j
@SpringBootApplication
public class FlowApiBasicApplication {
......
......@@ -19,7 +19,7 @@ public class MyController {
@GetMapping("/home")
public void getHome(){
System.out.println("Welcome home ....");
log.info("Welcome home ....");
}
......
package com.nisum;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.Flow;
@Slf4j
public class OrderSubscriber< T > implements Flow.Subscriber < T > {
private Flow.Subscription subscription;
......@@ -13,8 +14,8 @@ public class OrderSubscriber< T > implements Flow.Subscriber < T > {
@Override
public void onNext(T order) {
System.out.println("Subscriber : " + Thread.currentThread().getName() + " ORDER " +order);
System.out.println("Received--ORDER::" + order);
log.info("Subscriber : " + Thread.currentThread().getName() + " ORDER " +order);
log.info("Received--ORDER::" + order);
subscription.request(1);
}
......@@ -25,6 +26,6 @@ public class OrderSubscriber< T > implements Flow.Subscriber < T > {
@Override
public void onComplete() {
System.out.println("ON COMPLETE ORDER");
log.info("ON COMPLETE ORDER");
}
}
\ No newline at end of file
package com.nisum;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.Flow;
@Slf4j
public class ProductSubscriber< T > implements Flow.Subscriber < T > {
private Flow.Subscription subscription;
......@@ -13,8 +16,8 @@ public class ProductSubscriber< T > implements Flow.Subscriber < T > {
@Override
public void onNext(T product) {
System.out.println("Subscriber : " + Thread.currentThread().getName() + " PRODUCT " +product);
System.out.println("Received--PRODUCT::" + product);
log.info("Subscriber : " + Thread.currentThread().getName() + " PRODUCT " +product);
log.info("Received--PRODUCT::" + product);
subscription.request(1);
}
......
......@@ -5,12 +5,14 @@ import com.nisum.OrderSubscriber;
import com.nisum.ProductSubscriber;
import com.nisum.model.Order;
import com.nisum.model.Product;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import reactor.adapter.JdkFlowAdapter;
import reactor.core.publisher.Flux;
@Service
@Slf4j
public class FlowAppService {
@Autowired
......@@ -29,7 +31,7 @@ public class FlowAppService {
public Flux<Order> getOrderUsingPublisher() throws InterruptedException {
OrderSubscriber<Order> orderSubscriber = new OrderSubscriber<>();
System.out.println("Publishing OrderItems........................................................................");
log.info("Publishing OrderItems........................................................................");
orderData=myServiceImpl.getAllOrdersFromService();
JdkFlowAdapter.publisherToFlowPublisher(orderData).subscribe(orderSubscriber);
Thread.sleep(1000);
......@@ -38,7 +40,7 @@ public class FlowAppService {
public Flux<Product> getProductsUsingPublisher() throws InterruptedException {
ProductSubscriber<Product> productSubscriber = new ProductSubscriber<>();
System.out.println("Publishing ProductItems.....................................................................");
log.info("Publishing ProductItems.....................................................................");
productData=myServiceImpl.getAllProductsFromService();
JdkFlowAdapter.publisherToFlowPublisher(productData).subscribe(productSubscriber);
Thread.sleep(1000);
......
......@@ -14,6 +14,8 @@ repositories {
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
......
package com.nisum.backpressureStrategy;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.Flow;
@Slf4j
public class BackpressureSubscriber<Integer> implements Flow.Subscriber<Integer>{
private Flow.Subscription subscription;
@Override
public void onSubscribe(Flow.Subscription subscription) {
System.out.println("Subscribed");
log.info("Subscribed");
this.subscription = subscription;
subscription.request(1);
}
@Override
public void onNext(Integer item) {
System.out.println(Thread.currentThread().getName() + " | Received Inside Backpressure Subscriber = " + item);
log.info(Thread.currentThread().getName() + " | Received Inside Backpressure Subscriber = " + item);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
......@@ -25,12 +28,12 @@ public class BackpressureSubscriber<Integer> implements Flow.Subscriber<Integer>
@Override
public void onError(Throwable throwable) {
System.out.println(Thread.currentThread().getName() + " | ERROR = "
log.error(Thread.currentThread().getName() + " | ERROR = "
+ throwable.getClass().getSimpleName() + " | " + throwable.getMessage());
}
@Override
public void onComplete() {
System.out.println("Completed");
log.info("Completed");
}
}
package com.nisum.backpressureStrategy;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.Flow;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.SubmissionPublisher;
@Slf4j
public class BackpressureUsingBufferStrategy {
public static void main(String[] args) throws InterruptedException {
......@@ -14,7 +17,7 @@ public class BackpressureUsingBufferStrategy {
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() + " Publishing = " + i);
log.info(Thread.currentThread().getName() + " Publishing = " + i);
((SubmissionPublisher<Integer>) backPressurePublisher).submit(i);
}
......
package com.nisum.backpressureStrategy;
import java.util.concurrent.Flow;
import java.util.stream.IntStream;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.Flow;
@Slf4j
public class ElementSubscriber implements Flow.Subscriber<Integer> {
private Flow.Subscription subscription;
private int nextElementExpected;
......@@ -24,25 +24,25 @@ public class ElementSubscriber implements Flow.Subscriber<Integer> {
/* if (elementNumber != nextElementExpected) {
IntStream.range(nextElementExpected, elementNumber).forEach(
(itemNumber) ->
System.out.println(Thread.currentThread().getName()+"==="+"I missed the element " + itemNumber)
log.info(Thread.currentThread().getName()+"==="+"I missed the element " + itemNumber)
);
nextElementExpected = elementNumber;
}*/
System.out.println(Thread.currentThread().getName()+"==="+" I got a new element: " + elementNumber+" :Now wait till I give next Instruction");
log.info(Thread.currentThread().getName()+"==="+" I got a new element: " + elementNumber+" :Now wait till I give next Instruction");
sleep();
nextElementExpected++;
System.out.println(Thread.currentThread().getName()+"==="+"Get next element ");
log.info(Thread.currentThread().getName()+"==="+"Get next element ");
subscription.request(1);
}
@Override
public void onError(final Throwable throwable) {
System.out.println("Oops I got an error from the Publisher: " + throwable.getMessage());
log.error("Oops I got an error from the Publisher: " + throwable.getMessage());
}
@Override
public void onComplete() {
System.out.println("Completed");
log.info("Completed");
}
private void sleep() {
......
package com.nisum.backpressureStrategy;
import lombok.extern.slf4j.Slf4j;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.Flow;
import java.util.concurrent.atomic.AtomicInteger;
@Slf4j
public class EndSubscriber<T> implements Flow.Subscriber<T> {
private Flow.Subscription subscription;
@Override
public void onSubscribe(Flow.Subscription subscription) {
this.subscription = subscription;
......@@ -21,7 +17,7 @@ public class EndSubscriber<T> implements Flow.Subscriber<T> {
@Override
public void onNext(T item) {
System.out.println("Got in End Subscriber : " + item );
log.info("Got in End Subscriber : " + item );
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
......@@ -31,12 +27,12 @@ public class EndSubscriber<T> implements Flow.Subscriber<T> {
}
@Override
public void onError(Throwable throwable) {
System.out.println(Thread.currentThread().getName() + " | ERROR = "
log.error(Thread.currentThread().getName() + " | ERROR = "
+ throwable.getClass().getSimpleName() + " | " + throwable.getMessage());
}
@Override
public void onComplete() {
System.out.println("Completed");
log.info("Completed");
}
}
package com.nisum.backpressureStrategy;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.SubmissionPublisher;
@Slf4j
public class SubscriberEndBackpressreExample {
public static void main(String[] args) throws InterruptedException {
SubmissionPublisher<Integer> sb=new SubmissionPublisher<>();
sb.subscribe(new ElementSubscriber());
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() + " Publishing = " + i);
log.info(Thread.currentThread().getName() + " Publishing = " + i);
sb.submit(i);
}
sb.close();
......
package com.nisum.basicFlowExampleUsingProcessor;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.Flow;
@Slf4j
public class MySubscriber < T > implements Flow.Subscriber < T > {
private Flow.Subscription subscription;
......@@ -13,8 +16,8 @@ public class MySubscriber < T > implements Flow.Subscriber < T > {
@Override
public void onNext(T item) {
System.out.println("Subscriber : " + Thread.currentThread().getName() + " item " + item);
System.out.println("Received::" + item);
log.info("Subscriber : " + Thread.currentThread().getName() + " item " + item);
log.info("Received::" + item);
subscription.request(1);
}
......@@ -25,6 +28,6 @@ public class MySubscriber < T > implements Flow.Subscriber < T > {
@Override
public void onComplete() {
System.out.println("Done");
log.info("Done");
}
}
\ No newline at end of file
package com.nisum.processors;
import com.nisum.basicFlowExampleUsingProcessor.MySubscriber;
import com.nisum.processors.MyFilterProcessor;
import com.nisum.processors.MyTransformProcessor;
import lombok.extern.slf4j.Slf4j;
import java.util.Arrays;
import java.util.concurrent.SubmissionPublisher;
@Slf4j
public class App {
public static void main(String[] args) throws InterruptedException {
......@@ -29,7 +27,7 @@ public class App {
filterProcessor.subscribe(transformProcessor);
transformProcessor.subscribe(subscriber);
System.out.println("Publishing Items...");
log.info("Publishing Items...");
String[] items = {"100", "x", "200", "x", "300", "x"};
Arrays.asList(items).stream().forEach(i -> publisher.submit(i));
......
package com.nisum.processors;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.Flow;
import java.util.concurrent.SubmissionPublisher;
import java.util.function.Predicate;
@Slf4j
public class MyFilterProcessor < T, R > extends SubmissionPublisher<R> implements Flow.Processor< T , R > {
private Predicate<T> predicate;
......@@ -21,7 +24,7 @@ public class MyFilterProcessor < T, R > extends SubmissionPublisher<R> imp
}
public void onNext(T item) {
System.out.println("Filter Processor: " + Thread.currentThread().getName() + " item " + item);
log.info("Filter Processor: " + Thread.currentThread().getName() + " item " + item);
if (predicate.test(item)) {
submit((R) item);
}
......
package com.nisum.processors;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.Flow;
import java.util.concurrent.SubmissionPublisher;
import java.util.function.Function;
@Slf4j
public class MyTransformProcessor<T,R> extends SubmissionPublisher<R> implements Flow.Processor<T, R> {
private Function function;
......@@ -22,7 +25,7 @@ public class MyTransformProcessor<T,R> extends SubmissionPublisher<R> implements
@Override
public void onNext(T item) {
System.out.println("Transform Processor: " + Thread.currentThread().getName() + " item " + item);
log.info("Transform Processor: " + Thread.currentThread().getName() + " item " + item);
submit((R) function.apply(item));
subscription.request(1);
}
......
package com.nisum.publishers;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.Flow;
@Slf4j
public class SimplePublisherMain {
public static void main(String[] args) {
new SimplePublisher(10).subscribe(new Flow.Subscriber<>() {
......@@ -10,14 +13,14 @@ public class SimplePublisherMain {
}
@Override
public void onNext(Integer item) {
System.out.println("item = [" + item + "]");
log.info("item = [" + item + "]");
}
@Override
public void onError(Throwable throwable) {
}
@Override
public void onComplete() {
System.out.println("complete");
log.info("complete");
}
});
}
......
package com.nisum.publishers;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.*;
@Slf4j
public class SubmissionPublisherConsumeMethod {
public static void main(String[] args) throws InterruptedException {
......@@ -13,7 +16,7 @@ public class SubmissionPublisherConsumeMethod {
});
Thread.sleep(13000);
submissionPublisher.close();
System.out.println("Status::"+status);
log.info("Status::"+status);
}
......
package com.nisum.publishers;
import com.nisum.subscribers.CustomerSubscriber;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.SubmissionPublisher;
@Slf4j
public class SubmissionPublisherOfferMethod {
public static void main(String[] args) throws InterruptedException {
......
......@@ -2,12 +2,13 @@ package com.nisum.sampleCode;
import com.nisum.subscribers.MagazineSubscriber;
import com.nisum.subscribers.PrintSubscriber;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.SubmissionPublisher;
@Slf4j
public class Sample {
public static void main(String[] args) throws InterruptedException, ExecutionException {
......@@ -17,7 +18,7 @@ public class Sample {
feed.subscribe(magazineSubscriber);
feed.subscribe(printSubscriber);
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() + " Publishing = " + i);
log.info(Thread.currentThread().getName() + " Publishing = " + i);
feed.submit(i);
Thread.sleep(1000);
}
......
package com.nisum.subscribers;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.Flow;
public class CustomerSubscriber<Integer> implements Flow.Subscriber<Integer> {
@Slf4j
public class CustomerSubscriber<Integer> implements Flow.Subscriber<Integer> {
private Flow.Subscription sub;
@Override
public void onSubscribe(Flow.Subscription sub) {
System.out.println("Subscription done");
log.info("Subscription done");
this.sub = sub;
sub.request(5);
}
......@@ -16,7 +20,7 @@ import java.util.concurrent.Flow;
@Override
public void onNext(Integer arg0) {
System.out.println("Got in Customer Subscriber : " + arg0 );
log.info("Got in Customer Subscriber : " + arg0 );
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
......@@ -33,7 +37,7 @@ import java.util.concurrent.Flow;
@Override
public void onComplete() {
System.out.println("onComplete");
log.info("onComplete");
}
......
package com.nisum.subscribers;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.Flow;
@Slf4j
public class EventSubscriber<Integer> implements Flow.Subscriber<Integer> {
private Flow.Subscription subscription;
......@@ -13,7 +16,7 @@ public class EventSubscriber<Integer> implements Flow.Subscriber<Integer> {
@Override
public void onNext(Integer item) {
System.out.println("ES ::"+item);
log.info("ES ::"+item);
subscription.request(1);
if(item.equals(3))
subscription.cancel();
......@@ -21,12 +24,12 @@ public class EventSubscriber<Integer> implements Flow.Subscriber<Integer> {
@Override
public void onError(Throwable throwable) {
System.out.println("ERROR "+throwable);
log.error("ERROR "+throwable);
}
@Override
public void onComplete() {
System.out.println("DONE");
log.info("DONE");
}
}
package com.nisum.subscribers;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.Flow;
@Slf4j
public class MagazineSubscriber<Integer> implements Flow.Subscriber<Integer> {
private Flow.Subscription subscription;
......@@ -13,7 +16,7 @@ public class MagazineSubscriber<Integer> implements Flow.Subscriber<Integer> {
}
@Override
public void onNext(Integer item) {
System.out.println(Thread.currentThread().getName() +"Magazine ::" + item);
log.info(Thread.currentThread().getName() +"Magazine ::" + item);
subscription.request(1);
if(item.equals(5))
subscription.cancel();
......@@ -21,10 +24,10 @@ public class MagazineSubscriber<Integer> implements Flow.Subscriber<Integer> {
}
@Override
public void onError(Throwable error) {
System.out.println("RECEIVED AN ERROR IN MAGAZINE SUBSCRIBER: " + error.getMessage());
log.error("RECEIVED AN ERROR IN MAGAZINE SUBSCRIBER: " + error.getMessage());
}
@Override
public void onComplete() {
System.out.println("MagazineSubscription is complete");
log.info("MagazineSubscription is complete");
}
}
package com.nisum.subscribers;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.Flow;
@Slf4j
public class MessageSubscriber<Integer> implements Flow.Subscriber<Integer> {
private Flow.Subscription subscription;
......@@ -9,13 +12,13 @@ public class MessageSubscriber<Integer> implements Flow.Subscriber<Integer> {
@Override
public void onSubscribe(Flow.Subscription subscription) {
this.subscription=subscription;
System.out.println("Subscription done");
log.info("Subscription done");
subscription.request(1);
}
@Override
public void onNext(Integer item) {
System.out.println(Thread.currentThread().getName() + "MS ::"+item);
log.info(Thread.currentThread().getName() + "MS ::"+item);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
......@@ -27,11 +30,11 @@ public class MessageSubscriber<Integer> implements Flow.Subscriber<Integer> {
@Override
public void onError(Throwable throwable) {
System.out.println("RECEIVED AN ERROR IN MESSAGE SUBSCRIBER:::"+throwable);
log.error("RECEIVED AN ERROR IN MESSAGE SUBSCRIBER:::"+throwable);
}
@Override
public void onComplete() {
System.out.println("DONE");
log.info("DONE");
}
}
package com.nisum.subscribers;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.Flow;
@Slf4j
public class PrintSubscriber<Integer> implements Flow.Subscriber<Integer> {
private Flow.Subscription subscription;
......@@ -13,16 +16,16 @@ public class PrintSubscriber<Integer> implements Flow.Subscriber<Integer> {
}
@Override
public void onNext(Integer item) {
System.out.println(Thread.currentThread().getName() +":Print ::" + item);
log.info(Thread.currentThread().getName() +":Print ::" + item);
subscription.request(1);
}
@Override
public void onError(Throwable error) {
System.out.println("RECEIVED AN ERROR IN PRINT SUBSCRIBER: " + error.getMessage());
log.error("RECEIVED AN ERROR IN PRINT SUBSCRIBER: " + error.getMessage());
}
@Override
public void onComplete() {
System.out.println("PrintSubscriber is complete");
log.info("PrintSubscriber is complete");
}
}
......@@ -16,9 +16,6 @@ public class SubscriptionBehaviour {
sleep(1000);
}
private static Boolean sleep(int ms) {
try{
Thread.sleep(ms);
......
......@@ -15,5 +15,5 @@ public class Order {
private int orderId;
private String orderName;
private List<Product> products;
//private int productCount=products.size();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment