基于springboot和dubbo搭建SOA服务
来源:互联网 发布:js children 编辑:程序博客网 时间:2024/06/05 18:45
环境依赖
- JDK: version 6 or higher
- Maven: version 3 or higher
注册中心搭建
- zookeeper机器搭建
详见zookeeper搭建
dubbo监控中心搭建
dubbo-admin 本地编译打包
dubbo的所有源码可在https://github.com/alibaba/dubbo上下载。下好之后解压
dubbo-admin部署
- 安装
将 dubbo-admin-2.5.4-SNAPSHOT.war 拷入 tomcat webapps中 - 配置
修改tomcat的端口8088,修改方法如下,打到conf下的文件 server.xml,因为zookeeper会用到8080的端口,所以为了不冲突,把Tomcat的端口改一下。
服务搭建
- maven 依赖
<dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.5</version></dependency>
- 配置
import com.alibaba.dubbo.config.*;import com.alibaba.dubbo.config.spring.AnnotationBean;import com.alibaba.dubbo.rpc.Invoker;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * Created by dream on 2017/5/9. */@Configuration@ConditionalOnClass(Invoker.class)public class DubboConfiguration { @Value("${dubbo.application.name}") private String applicationName; @Value("${dubbo.registr.protocol}") private String protocol; @Value("${dubbo.registry.address}") private String registryAddress; @Value("${dubbo.protocol.name}") private String protocolName; @Value("${dubbo.protocol.port}") private int protocolPort; @Value("${dubbo.provider.timeout}") private int timeout; @Value("${dubbo.provider.retries}") private int retries; @Value("${dubbo.provider.delay}") private int delay; @Value("${dubbo.reference.check}") private boolean check; /** * 设置dubbo扫描包 * * @param packageName * @return */ @Bean public static AnnotationBean annotationBean(@Value("${dubbo.annotation.package}") String packageName) { AnnotationBean annotationBean = new AnnotationBean(); annotationBean.setPackage(packageName); return annotationBean; } /** * 注入dubbo上下文 * * @return */ @Bean public ApplicationConfig applicationConfig() { // 当前应用配置 ApplicationConfig applicationConfig = new ApplicationConfig(); applicationConfig.setName(this.applicationName); return applicationConfig; } /** * 注入dubbo注册中心配置,基于zookeeper * * @return */ @Bean public RegistryConfig registryConfig() { // 连接注册中心配置 RegistryConfig registry = new RegistryConfig(); registry.setProtocol(protocol); registry.setAddress(registryAddress); return registry; } /** * 默认基于dubbo协议提供服务 * * @return */ @Bean public ProtocolConfig protocolConfig() { // 服务提供者协议配置 ProtocolConfig protocolConfig = new ProtocolConfig(); protocolConfig.setName(protocolName); protocolConfig.setPort(protocolPort); protocolConfig.setThreads(200); System.out.println("默认protocolConfig:" + protocolConfig.hashCode()); return protocolConfig; } @Bean(name = "dubboProvider") public ProviderConfig providerConfig(ApplicationConfig applicationConfig, RegistryConfig registryConfig, ProtocolConfig protocolConfig) { ProviderConfig providerConfig = new ProviderConfig(); providerConfig.setTimeout(timeout); providerConfig.setRetries(retries); providerConfig.setDelay(delay); providerConfig.setApplication(applicationConfig); providerConfig.setRegistry(registryConfig); providerConfig.setProtocol(protocolConfig); return providerConfig; } /** * dubbo消费 * * @param applicationConfig * @param registryConfig * @return */ @Bean(name="defaultConsumer") public ConsumerConfig consumerConfig(ApplicationConfig applicationConfig, RegistryConfig registryConfig) { ConsumerConfig consumerConfig = new ConsumerConfig(); consumerConfig.setCheck(check); return consumerConfig; } public String getApplicationName() { return applicationName; } public void setApplicationName(String applicationName) { this.applicationName = applicationName; } public String getProtocol() { return protocol; } public void setProtocol(String protocol) { this.protocol = protocol; } public String getRegistryAddress() { return registryAddress; } public void setRegistryAddress(String registryAddress) { this.registryAddress = registryAddress; } public String getProtocolName() { return protocolName; } public void setProtocolName(String protocolName) { this.protocolName = protocolName; } public int getProtocolPort() { return protocolPort; } public void setProtocolPort(int protocolPort) { this.protocolPort = protocolPort; } public int getTimeout() { return timeout; } public void setTimeout(int timeout) { this.timeout = timeout; } public int getRetries() { return retries; } public void setRetries(int retries) { this.retries = retries; } public int getDelay() { return delay; } public void setDelay(int delay) { this.delay = delay; } public boolean isCheck() { return check; } public void setCheck(boolean check) { this.check = check; }}
- properties文件
dubbo.application.name=pay-servicedubbo.application.logger=slf4jdubbo.annotation.package=com.alibaba.dubbo.demodubbo.protocol.name=dubbodubbo.protocol.port=20880dubbo.protocol.accessLog=truedubbo.provider.timeout=3000dubbo.provider.retries=1dubbo.provider.delay=-1dubbo.registr.protocol=zookeeperdubbo.registry.address=127.0.0.1:2181dubbo.registry.register=truedubbo.reference.check=false
provider
- 服务接口
package com.alibaba.dubbo.demo;public interface DemoService { String sayHello(String name);}
- 服务实现
package com.alibaba.dubbo.demo.provider;import com.alibaba.dubbo.demo.DemoService;import com.alibaba.dubbo.config.annotation.Service;@Service(version = "1.0.0", provider = "dubboProvider")public class DemoServiceImpl implements DemoService { public String sayHello(String name) { return "Hello " + name; }}
consumer
package com.alibaba.dubbo.demo.consumer;import com.alibaba.dubbo.demo.DemoService;import com.alibaba.dubbo.demo.DemoConsumerService;import com.alibaba.dubbo.config.annotation.Reference;public class DemoConsumerServiceImpl implements DemoConsumerService { @Reference(version = "1.0.0", consumer = "defaultConsumer", check = false) private DemoService deemoService; public String sayHello(String name) { return deemoService.sayHello(name); }}
阅读全文
1 0
- 基于springboot和dubbo搭建SOA服务
- SpringBoot+Dubbo分布式SOA项目骨架搭建
- 利用dubbo和zookeeper搭建高可用性的SOA服务
- dubbo与zookeeper搭建类soa服务
- 基于dubbo从传统MVC架构转向SOA架构分布式设计4--(服务部署集群搭建及负载均衡)
- 基于springboot搭建dubbo框架(注解和xml配置两种方式)
- eclipse 使用maven 构建springboot+dubbo+zookeeper 构建soa服务(面向服务架构)
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
- Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
- SOA 服务化 服务治理 dubbo
- dubbo服务搭建教程
- Dubbo服务环境搭建以及Dubbo服务的提供者和消费者配置详解
- #Java 核心技术卷一阅读笔记# 第七章 异常、断言和日志
- 电子网络营销能给你带来什么益处
- 2017都要过去了,还不知道服务设计?
- iOS 启动耗时统计
- MySql中汉字排序
- 基于springboot和dubbo搭建SOA服务
- Linux spi驱动框架之执行流程-nuc970-att7022
- spring 之 RestTemplate 用法
- jsp动态改变contenttype值
- QT添加到系统托盘
- 运维工程师必备之MySQL数据的主从复制、半同步复制和主主复制详解
- Protobuf语言指南——.proto文件语法详解
- #pragma once与#ifndef两种防止头文件二次编译的区别
- JS前端数据多条件筛选