motan icon indicating copy to clipboard operation
motan copied to clipboard

能否支持非Spring的服务调用方接入?

Open JackYide opened this issue 6 years ago • 4 comments

您好,请问motan能否支持非Spring工程的调用方接入呢? 比如如果我想在Storm/Flink Job中调用Motan RPC服务,能否实现呢?

JackYide avatar Sep 13 '18 12:09 JackYide

可以,微博内部也有一些strom的工程在使用motan,如果完全没有使用spring可以使用api方式调用motan服务,可以参考api方式调用motanapi方式提供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 avatar Sep 14 '18 02:09 rayzhang0603

@rayzhang0603 多谢张兄回复。那么请问,是不是不管服务端用spring方式提供服务还是用api方式提供服务,客户端都可以直接用api方式调用motan服务对呢?

JackYide avatar Oct 08 '18 11:10 JackYide

是的

rayzhang0603 avatar Oct 10 '18 13:10 rayzhang0603

spring只是一个可选依赖而已,本质上motan就是一个简单java应用,脱离spring完全可以运行

lhl4546 avatar Nov 22 '18 03:11 lhl4546