這里只闡述如何集成生產者端,消費者端差不多雷同就不多敘述了:
1.首先引入相關依賴
io.dubbo.springboot
dubbo什么時候開源的?spring-boot-starter-dubbo
1.0.0
2.然后配置文件
spring.dubbo.application.name=自己的項目名稱
dubbo調用方式、spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
spring.dubbo.scan=掃描dubbo實現的類的路徑
dubbo使用?3.編寫測試類
public interface DubboTest{
void test();
}
Spring boot,public class MyDubboTestImpl implements DubboTest{
@Override
public void test(){
System.out.println("dubbo服務");
dubbo調用過程?}
}
4.啟動本地zk,然后再啟動服務
5.觀察zk信息可以看到服務被注冊上
dubbo注解、注意:
這里在使用配置文件的時候有一個坑需要注意,目前應該是只有在用這個jar包集成dubbo的時候才會出現,
我們在使用內部配置文件的時候沒有任何問題;但是當使用外部配置文件,例如
@PropertySource(value={"xxxx"})來引入時,會發現dubbo服務無法注冊到zk上;
springboot消息隊列?我經過調試源碼發現,當我們通過引入外部配置文件的方式啟動程序時,發現
package io.dubbo.springboot;
import com.alibaba.dubbo.config.spring.AnnotationBean;
import org.springframework.beans.BeanUtils;
dubbo分布式框架、import org.springframework.context.ApplicationContextInitializer;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.Environment;
public class DubboConfigurationApplicationContextInitializer implements ApplicationContextInitializer {
dubbo分布式事務?@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
Environment env = applicationContext.getEnvironment();
String scan = env.getProperty("spring.dubbo.scan");
if (scan != null) {
AnnotationBean scanner = BeanUtils.instantiate(AnnotationBean.class);
scanner.setPackage(scan);
scanner.setApplicationContext(applicationContext);
applicationContext.addBeanFactoryPostProcessor(scanner);
applicationContext.getBeanFactory().addBeanPostProcessor(scanner);
applicationContext.getBeanFactory().registerSingleton("annotationBean", scanner);
}
}
}
上面這個類中的scan 參數為null,但是使用內部配置文件的時候scan這個參數不為空;
然后再查看env以及applicationContext的參數信息,發現沒相關配置的信息,看下圖:
1.不正常:
image.png
2.正常的:
image.png
image.png
解決辦法:
1.首先想到的解決辦法是直接繼承這個類,然后重寫該方法,然后嘗試了發現不生效,通過追查引用發現,這個類是通過spring.factories這個文件配置的
image.png
2.下載這個jar的源碼重新編寫這個類,然后打包傳入本地私服的第三方jar上,通過pom導入使用;
3.尋找能否覆蓋這個文件,指定使用自己重寫的配置類(不知道有沒有,還沒有找到);
目前遇到了這些問題和注意事項,文章可能有出入,如果有問題,請聯系QQ:1107156537
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态