motan
motan copied to clipboard
能否支持非Spring的服务调用方接入?
您好,请问motan能否支持非Spring工程的调用方接入呢? 比如如果我想在Storm/Flink Job中调用Motan RPC服务,能否实现呢?
可以,微博内部也有一些strom的工程在使用motan,如果完全没有使用spring可以使用api方式调用motan服务,可以参考api方式调用motan、api方式提供motan服务。不过建议通过spring配置方式使用motan。
另外需要注意,使用motan的项目打成一个独立运行jar包时,需要对META-INF/services/下motan相关的SPI扩展文件使用追加模式打包。如果使用了spring方式,则META-INF/下的spring.schemas、spring.handler也需要使用追加模式。 样例如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/services/com.weibo.api.motan.registry.Registry</resource>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/services/com.weibo.api.motan.registry.RegistryFactory</resource>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/services/com.weibo.api.motan.rpc.Protocol</resource>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/services/com.weibo.api.motan.cluster.LoadBalance</resource>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/services/com.weibo.api.motan.cluster.Cluster</resource>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/services/com.weibo.api.motan.codec.Codec</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
@rayzhang0603 多谢张兄回复。那么请问,是不是不管服务端用spring方式提供服务还是用api方式提供服务,客户端都可以直接用api方式调用motan服务对呢?
是的
spring只是一个可选依赖而已,本质上motan就是一个简单java应用,脱离spring完全可以运行