我想在一个传输上使用多个服务(节俭)(two one thrift)

我想创建几个服务,我想使用它们与不同的标识符。所以我的意思是:

我想创建几个服务,我想使用它们与不同的标识符。所以我的意思是:

我有一个用户和项目服务。我想同时使用这些。

我的意思是我可以在 xmlrpc 上的“handlermap”中添加更多的“服务”。

http://ws.apache.org/xmlrpc/server.html
phm.addHandler("Users",
             Users.class); 
phm.addHandler("Projects",
               Projects.class);

我想在节俭中做同样的事情。

这是一个简单的例子:test.thrift

typedef i64 UserId
struct Bonk
{
  1: string message,
  2: i32 type
}
struct Insanity
{
  1: map<Bonk, UserId> userMap,
  2: list<Bonk> xtructs
}
service ThriftTest
{
  void         testVoid(),
  string       testString(1: string test),
  byte         testByte(1: byte test),
  i32          testI32(1: i32 test),
  i64          testI64(1: i64 test),
  double       testDouble(1: double test),
  list<map<i32,i32>> testMap(1: map<i32,i32> test),
  map<string,string> testStringMap(1: map<string,string> test),
  set<i32>     testSet(1: set<i32> test),
  map<i32,map<i32,i32>> testMapMap(1: i32 test),
  map<UserId, map<i32,Insanity>> testInsanity(1: Insanity argument)
}

然后我创建一个 implementatino,然后将其添加到 TServer 的实例。

Users.Processor users_proccesor = new Users.Processor(New UsersImpl());
Projects.Processor project_processor = new Projects.Processors(new ProjectsImp());
// I would like to add Users and Projects  
ThriftTest.Processor prc = new ThriftTest.Processor(new ThiftTestImp());
            TServerTransport serverTransport = new TServerSocket(9090);
            TServer server = new TSimpleServer(new Args(serverTransport).processor( prc ));

这里是我的大问题,我不能添加服务器的多个实例。

提前感谢您的帮助。

7

Multiplexed Services(本质上这就是你想在这里做的)现在正在集成。已经有一些可用的语言的补丁,要么已经被接受,要么正在。

https://issues.apache.org/jira/browse/THRIFT-563是一个好的开始。

PS:欢迎审阅者和贡献;-)

5

RPC 调用通过 TMessage 结构中没有 'targetService' 字段的线路传输。因此,没有简单的方法将多个服务绑定到单个端口,而无需将此字段添加到 TMessage 并重新编译节俭。

可以通过实现类似于 TSimpleSever(或任何其他 TServer)的自定义 TServer 来进行黑客攻击。

服务器应该在循环中读取目标服务并获得相应的处理器:

      ...
      inputProtocol = inputProtocolFactory_.getProtocol(inputTransport);
      outputProtocol = outputProtocolFactory_.getProtocol(outputTransport);
      do {
        String target = inputProtocol.readString();
        processor = processorFactoryMap.get(target).getProcessor(client);
      while (processor.process(inputProtocol, outputProtocol));
      ...

客户端应使用目标服务字符串为每条消息添加前缀。这可以通过在自定义协议中包装 TBinaryProtocol 来完成:

public void writeMessageBegin(TMessage message) throws TException {
    wrapped.writeString(target);
    wrapped.writeMessageBegin(message);
}

这种方法的主要缺点是失去与其他客户端的互操作性。因此,可能最好在不同的端口上启动两个不同的 TServers,或者在单个节俭服务中定义所有方法,然后将调用委托给适当的处理程序。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(564)
在CSS中设置TextBox样式的最佳方式
上一篇
无法在 CI/CDgitlab上运行testcafe测试 但在运行器上本地运行良好
下一篇

相关推荐

  • python wifi破解:如何使用Python破解WiFi密码

    Python wifi破解是指使用Python编写的程序来破解WiFi密码。它可以帮助用户轻松地连接到附近的无线网络,而无需手动输入密码。Python wifi破解的基本原理是使用Python编写的程序来搜索附近的无线网络,并尝试使用一系列常用的密码来破解。如果程序发现一个能够成功连接的密码,它将显示出来,用户可以使用它来连接到WiFi网络。…

    2023-09-15 14:06:30
    0 51 10
  • python if else语句:如何使用Python if else语句来控制程序流程

    Python if else 语句是一种条件控制语句,它检查一个或多个表达式的值是否为真,如果为真,则执行一个代码块,否则,执行另一个代码块。…

    2023-02-16 10:36:29
    0 66 75
  • python 一行if:如何使用Python中的if语句

    示例示例Python 一行 if 语句是指在一行内完成 if 条件判断,语法格式如下:`if : `…

    2023-04-14 01:12:10
    0 44 24
  • python if 与:若要满足条件,如何利用Python if语句

    Python if 语句是一种条件控制语句,用于检查一个条件是否为真,如果为真,则执行相应的语句块。代码示例:…

    2023-02-18 06:11:01
    0 18 53
  • wifi能打开网页4g打不开:4G无法打开网页,Wifi却可以?怎么解决?

    Wifi能打开网页4G打不开,可能是由于4G网络的信号不够稳定或者4G网络的连接速度不够快导致的。可以尝试重启设备,检查4G网络的连接状态,更换4G网络的SIM卡,检查4G网络的信号强度,以及检查4G网络的数据流量是否已经用完等。如果以上方法都无法解决,可以尝试使用以下代码来检查4G网络的连接状态:…

    2023-04-25 02:33:25
    0 49 69
  • python 连接wifi:如何使用Python连接WiFi

    Python 连接 wifi 是一个非常复杂的过程,因为它涉及到多种不同的网络协议、系统调用和硬件驱动程序。要连接 wifi,你首先需要知道 wifi 的 SSID(服务集标识符)和密码。然后,你需要使用 Python 的 socket 库来创建一个 TCP/IP 连接,并使用 Wifi 协议(如 IEEE 802.11)来发送和接收数据。…

    2023-03-20 15:47:23
    0 11 84
  • phpstorm 打不开:解决 PHPStorm 无法启动的问题

    如果打不开,可能是由于以下原因:操作系统问题:检查操作系统是否支持,如果不支持,请更新操作系统。…

    2023-06-26 14:04:30
    0 16 34
  • php框架:使用 Laravel 框架开发应用程序

    PHP框架是一种用于快速开发Web应用程序的软件结构。它使用一系列的类和函数,以及一组组织代码的规则,帮助开发人员更快地开发Web应用程序。它还可以提供一个可重复使用的结构,以便可以更快地开发更多的应用程序。…

    2023-09-12 06:32:21
    0 60 41

发表评论

登录 后才能评论

评论列表(77条)