package org.zbus;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import org.zbus.client.Broker;
import org.zbus.client.broker.SingleBroker;
import org.zbus.client.broker.SingleBrokerConfig;
import org.zbus.client.service.ServiceConfig;
import org.zbus.client.service.ServiceHandler;
import org.zbus.client.service.ServiceLoader;
import org.zbus.client.service.ServiceProvider;
import org.zbus.common.logging.Logger;
import org.zbus.common.logging.LoggerFactory;
import org.zbus.common.remoting.Message;
public class ServiceProviderExample implements ServiceProvider, ServiceHandler {
private static final Logger log = LoggerFactory.getLogger(ServiceProviderExample.class);
private ExecutorService executor = new ThreadPoolExecutor(4, 16, 120, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>());
public ServiceProviderExample(){
}
@Override
public ServiceConfig getConfig() {
ServiceConfig config = new ServiceConfig();
config.setMq("HttpCallback");
config.setServiceHandler(this);
return config;
}
private void handleMessage(Message req){
//填写业务逻辑
}
@Override
public Message handleRequest(final Message msg) {
try{
log.info(msg.toString());
executor.submit(new Runnable() {
@Override
public void run() {
handleMessage(msg);
}
});
} catch (Throwable e){
log.error(e.getMessage(), e);
}
return null;
}
/**
* 单独测试注册到指定的zbus,插件模式下只需要把本class所在的jar放到zbus插件可扫描的任何目录下即可
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
SingleBrokerConfig config = new SingleBrokerConfig();
config.setBrokerAddress("127.0.0.1:15555");
Broker broker = new SingleBroker(config);
final ServiceLoader serviceLoader = new ServiceLoader(broker);
ServiceProvider sp = new ServiceProviderExample();
serviceLoader.loadService(sp);
}
}