dubbo 解决既是消费者又是提供者 Duplicate application configs 的问题

首先  有应用A  是 提供者

应用B 来实现既是消费者又是提供者

在应用 B 这边新建两个xml

dubbo-consumer.xml  消费者

    <!-- 自动扫描注解:通过dubbo实现 -->
    <dubbo:annotation package="test.dubbo.*" />
    <!-- 必须加上:提供方应用服务端的名称 -->
    <dubbo:application name="person-client" />

    <!-- 服务端需要把dubbo服务注册到zookeeper上进行广播 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" />
   <!-- 用dubbo协议在20881端口服务 -->
    <dubbo:protocol name="dubbo" port="20881" />
<!-- 注册需要使用的dubbo服务,通过interface指定服务接口 --> <dubbo:reference id="personInfoService" interface="test.dubbo.itf.IpersonInfoService" timeout="10000" check="false" />

dubbo-provider.xml  提供者

    <!-- 自动扫描注解:通过dubbo实现 -->
    <dubbo:annotation package="test.dubbo.*" />
    <!-- 必须加上:提供方应用服务端的名称 -->
    <dubbo:application name="person-center" />

    <!-- 服务端需要把dubbo服务注册到zookeeper上进行广播 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" />

    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />

    <!-- 服务端声明需要对外开放提供服务的接口 -->
    <dubbo:service interface="test.dubbo.itf.IpersonInfoService"
        protocol="dubbo" ref="personInfoService" />

启动之后会报错: Duplicate application configs: <dubbo:application name="person-client" id="person-client" /> and <dubbo:application name="person-center" id="person-center" />

重复的应用程序的配置

解决办法是把其中一个xml中的配置文件删除,留一个就好了

比如删除 dubbo-provider.xml 里面的

<!-- 自动扫描注解:通过dubbo实现 -->
    <dubbo:annotation package="test.dubbo.*" />
    <!-- 必须加上:提供方应用服务端的名称 -->
    <dubbo:application name="person-center" />

    <!-- 服务端需要把dubbo服务注册到zookeeper上进行广播 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" />

    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />

修改后的 xml文件

dubbo-consumer.xml  消费者

    <!-- 自动扫描注解:通过dubbo实现 -->
    <dubbo:annotation package="test.dubbo.*" />
    <!-- 必须加上:提供方应用服务端的名称 -->
    <dubbo:application name="person-client" />

    <!-- 服务端需要把dubbo服务注册到zookeeper上进行广播 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" />
   <!-- 用dubbo协议在20881端口服务 -->
    <dubbo:protocol name="dubbo" port="20881" />
<!-- 注册需要使用的dubbo服务,通过interface指定服务接口 --> <dubbo:reference id="personInfoService" interface="test.dubbo.itf.IpersonInfoService" timeout="10000" check="false" />

dubbo-provider.xml  提供者

    <!-- 服务端声明需要对外开放提供服务的接口 -->
    <dubbo:service interface="test.dubbo.itf.IpersonInfoService"
        protocol="dubbo" ref="personInfoService" />

原因是一个应用不能有重复的应用程序配置,去掉一个相同的配置就可以了。

这样就可以实现 dubbo 既是提供者又是消费者了。

时间: 2024-08-30 02:07:46

dubbo 解决既是消费者又是提供者 Duplicate application configs 的问题的相关文章

dubbo应用既当提供者又当消费者java.lang.IllegalStateException: Duplicate application configs

一个dubbo的应用启动时报错:java.lang.IllegalStateException: Duplicate application configs.原因如下: 当一个应用既当提供者和消费者时,必定会分别配置应用的名称: 提供者: [html] <dubbo:application name="XXXX" /> 消费者: [html] <bean id="dubbo_application" class="com.alibaba.

用信号量解决生产者消费者问题

用信号量解决生产者消费者问题: ipc.h #ifndef _IPC_H_ #define _IPC_H_ #include <sys/types.h> #include <unistd.h> #include <sys/ipc.h> #include <sys/sem.h> #include <sys/shm.h> #include <errno.h> #include <stdio.h> #include <st

两种方式解决 生产者消费者问题

一.通过wait().notify()线程通信来实现 输出结果: 二.通过阻塞队列来解决生产者消费者问题 输出结果: 由输出结果可以看出:"最后阻塞队列中还剩下4个鸡蛋"明显是正确的,可知阻塞队列内部意见实现了同步,不需要我们额外同步,是线程安全的.

使用条件量解决生产者消费者问题

在linux多线程同步中,除了互斥量以外,pthread提供了另一种同步机制:条件变量.正如名字一样,条件量允许线程由于一些未达到的条件而阻塞. 条件变量与互斥量经常一起使用.这种模式用于让一个线程锁住一个变量,然后当它不能获得它期待的结果时等待一个条件变量.最后另一个线程会向他发出信号,使它可以继续执行.pthread_cond_wait原子性地调用并解锁它持有的互斥量.由于这个原因,互斥量是参数之一. 下面通过代码演示如何通过条件量来解决生产者消费者问题. #include<stdio.h>

java多线程解决生产者消费者问题

import java.util.ArrayList; import java.util.List; /** * Created by ccc on 16-4-27. */ public class Test { public static void main(String[] args) { GunClip clip = new GunClip(); Producer p = new Producer(clip); customer c = new customer(clip); p.star

【译】使用阻塞队列解决生产者-消费者问题

如果你想避免使用错综复杂的wait–notify的语句,BlockingQueue非常有用.BlockingQueue可用于解决生产者-消费者问题,如下代码示例.对于每个开发人员来说,生产者消费者问题已经非常熟悉了,这里我将不做详细描述. 为什么BlockingQueue适合解决生产者消费者问题 任何有效的生产者-消费者问题解决方案都是通过控制生产者put()方法(生产资源)和消费者take()方法(消费资源)的调用来实现的,一旦你实现了对方法的阻塞控制,那么你将解决该问题. Java通过Blo

Dubbo中服务消费者和服务提供者之间的请求和响应过程

服务提供者初始化完成之后,对外暴露Exporter.服务消费者初始化完成之后,得到的是Proxy代理,方法调用的时候就是调用代理. 服务消费者经过初始化之后,得到的是一个动态代理类,InvokerInvocationHandler,包含MockClusterInvoker,MockClusterInvoker包含一个RegistryDirectory和FailoverClusterInvoker. Java动态代理,每一个动态代理类都必须要实现InvocationHandler这个接口,并且每一

dubbo生产者和消费者

官网:http://dubbo.io/ 1.xml配置 (1)生产者:(下面该配置既是生产者也是消费者) provider.xml <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchem

Java多线程之生产者消费者问题&amp;lt;一&amp;gt;:使用synchronized keyword解决生产者消费者问题

今天看了一片博文,讲Java多线程之线程的协作,当中作者用程序实例说明了生产者和消费者问题,但我及其它读者发现程序多跑几次还是会出现死锁,百度搜了下大都数的样例也都存在bug,经过细致研究发现当中的问题.并攻克了,感觉有意义贴出来分享下. 以下首先贴出的是有bug的代码,一个4个类.Plate.java: package CreatorAndConsumer; import java.util.ArrayList; import java.util.List; /** * 盘子,表示共享的资源