Skip to content

ThierrySquirrel/butterfly-spring-boot-starter

Repository files navigation

butterfly-spring-boot-starter

butterfly RocketMQ Spring Book Edition

中文

Support function:

  • RPC Remote call

RPC Remote call:

Use the components provided by pine for external expansion
Provide 'half long connection' RPC tool for load balancing

Filter:

Filtering data for requests and responses

Quick Start

<!--Adding dependencies to pom. XML-->
        <dependency>
            <artifactId>butterfly-spring-boot-starter</artifactId>
            <groupId>com.github.thierrysquirrel</groupId>
            <version>1.4.1.4-RELEASE</version>
        </dependency>

configuration file

## application.properties
butterfly.butterfly-service-name="ServiceDemo" Service name
butterfly.butterfly-service-url="127.0.0.1:5050" Butterfly service address
butterfly.pine-service-url="127.0.0.1:6060" Pine service address,If you need a cluster 127.0.0.1:6060,127.0.0.1:6061,127.0.0.1:6062

Start Butterfly

@SpringBootApplication
@EnableButterfly
public class DemoApplication{
    public static void main(String[] args){
        SpringApplication.run(DemoApplication.class, args);
    }
   
}

RPC Producer

@Flower
public class Producer {
   @Fragrance("/ServiceDemo/hello")
   public String hello() {
       return "world";
   }

   @Fragrance("/ServiceDemo/world")
   public String hello(String world) {
       return "world"+world;
   }
}

RPC Consumer

@Butterfly("ServiceDemo")
public interface Consumer {
   @Flutter ("/ServiceDemo/hello")
   String hello();

   @Flutter("/ServiceDemo/world")
   String hello(String text);
}

Using RPC

@RestController
public class Demo {
   @Resource
   private Consumer consumer;

   @GetMapping("/play")
   public String world() {
       return consumer.hello ();
   }
}

Filter

@ButterflyFilter
public class ConsumerFilter implements Filter {
	@Override
	public void filter(PineRequestContextFilterDomain pineRequestContextFilterDomain) {
        pineRequestContextFilterDomain.setAttachment("key","value");        	
	}
}
@FlowerFilter
public class ProducerFilter implements Filter {
	@Override
	public void filter(PineRequestContextFilterDomain pineRequestContextFilterDomain) {
		pineRequestContextFilterDomain.getAttachment("key");	
	}
}

Russian flag