// Path: mq-aliyun-consumer-spring-boot-starter/src/main/java/com/github/mq/consumer/util/ControllerMethods.java
// public class ControllerMethods {
//     public interface ControllerMethod extends Serializable { }
// 
//     
//     @FunctionalInterface
//     public interface ControllerMethod0 extends ControllerMethod {
//         Action apply() throws Exception;
//     }
//     
//     @FunctionalInterface
//     public interface ControllerMethod1<A> extends ControllerMethod {
//         Action apply(A a) throws Exception;
//     }
//     
//     @FunctionalInterface
//     public interface ControllerMethod2<A,B> extends ControllerMethod {
//         Action apply(A a, B b) throws Exception;
//     }
//     @FunctionalInterface
//     public interface ControllerMethod3<A,B,C> extends ControllerMethod {
//         Action apply(A a, B b, C c) throws Exception;
//     }
// 
// }
// 
// Path: mq-aliyun-consumer-spring-boot-starter/src/main/java/com/github/mq/consumer/util/WithControllerMethod.java
// public interface WithControllerMethod<T> {
// 
//     T subscribeTag(String tag, ControllerMethods.ControllerMethod controllerMethod);
// 
//     default T subscribeTag(String tag, ControllerMethods.ControllerMethod0 controllerMethod) {
//         return subscribeTag(tag,(ControllerMethods.ControllerMethod)controllerMethod);
//     }
// 
//     default <A> T subscribeTag(String tag, ControllerMethods.ControllerMethod1<A> controllerMethod) {
//         return subscribeTag(tag,(ControllerMethods.ControllerMethod)controllerMethod);
//     }
// 
//     default <A,B> T subscribeTag(String tag, ControllerMethods.ControllerMethod2<A, B> controllerMethod) {
//         return subscribeTag(tag,(ControllerMethods.ControllerMethod)controllerMethod);
//     }
// 
//     default <A,B,C> T subscribeTag(String tag, ControllerMethods.ControllerMethod3<A,B,C> controllerMethod) {
//         return subscribeTag(tag,(ControllerMethods.ControllerMethod)controllerMethod);
//     }
// 
// }


import com.github.mq.consumer.util.ControllerMethods;
import com.github.mq.consumer.util.WithControllerMethod;
package com.github.mq.consumer;


/**
 * Created by wangziqing on 17/7/13.
 */
public interface ConsumerBuild extends WithControllerMethod<ConsumerBuild> {
    ConsumerBuild subscribeTopic(String topic);
// Path: mq-aliyun-consumer-spring-boot-starter/src/main/java/com/github/mq/consumer/util/ControllerMethods.java
// public class ControllerMethods {
//     public interface ControllerMethod extends Serializable { }
// 
//     
//     @FunctionalInterface
//     public interface ControllerMethod0 extends ControllerMethod {
//         Action apply() throws Exception;
//     }
//     
//     @FunctionalInterface
//     public interface ControllerMethod1<A> extends ControllerMethod {
//         Action apply(A a) throws Exception;
//     }
//     
//     @FunctionalInterface
//     public interface ControllerMethod2<A,B> extends ControllerMethod {
//         Action apply(A a, B b) throws Exception;
//     }
//     @FunctionalInterface
//     public interface ControllerMethod3<A,B,C> extends ControllerMethod {
//         Action apply(A a, B b, C c) throws Exception;
//     }
// 
// }
// 
// Path: mq-aliyun-consumer-spring-boot-starter/src/main/java/com/github/mq/consumer/util/WithControllerMethod.java
// public interface WithControllerMethod<T> {
// 
//     T subscribeTag(String tag, ControllerMethods.ControllerMethod controllerMethod);
// 
//     default T subscribeTag(String tag, ControllerMethods.ControllerMethod0 controllerMethod) {
//         return subscribeTag(tag,(ControllerMethods.ControllerMethod)controllerMethod);
//     }
// 
//     default <A> T subscribeTag(String tag, ControllerMethods.ControllerMethod1<A> controllerMethod) {
//         return subscribeTag(tag,(ControllerMethods.ControllerMethod)controllerMethod);
//     }
// 
//     default <A,B> T subscribeTag(String tag, ControllerMethods.ControllerMethod2<A, B> controllerMethod) {
//         return subscribeTag(tag,(ControllerMethods.ControllerMethod)controllerMethod);
//     }
// 
//     default <A,B,C> T subscribeTag(String tag, ControllerMethods.ControllerMethod3<A,B,C> controllerMethod) {
//         return subscribeTag(tag,(ControllerMethods.ControllerMethod)controllerMethod);
//     }
// 
// }


// Path: mq-aliyun-consumer-spring-boot-starter/src/main/java/com/github/mq/consumer/ConsumerBuild.java
import com.github.mq.consumer.util.ControllerMethods;
import com.github.mq.consumer.util.WithControllerMethod;

package com.github.mq.consumer;


/**
 * Created by wangziqing on 17/7/13.
 */
public interface ConsumerBuild extends WithControllerMethod<ConsumerBuild> {
    ConsumerBuild subscribeTopic(String topic);
    ConsumerBuild subscribeTag(String tag, ControllerMethods.ControllerMethod controllerMethod);