Architecture 节俭+;ActiveMQ集成

Architecture 节俭+;ActiveMQ集成,architecture,activemq,thrift,Architecture,Activemq,Thrift,我的公司目前正在调查Thrift和ActiveMQ的集成。我们想建立一个独立于语言的服务层,它运行在一个http服务器上,每个thrift服务都可以通过ActiveMQ与其他thrift服务通信。到目前为止,我还找不到任何其他人试图实施这一计划。我很好奇其他人会如何实现这个,以及是否有这样做的文档 当前的原型使用一个简单的python服务器,该服务器承载各种thrift服务。在每个服务调用(即更新设置)中,创建一条ActiveMQ消息并将其发送到特定队列(即一个应用程序的设置服务向另一个应用程序

我的公司目前正在调查Thrift和ActiveMQ的集成。我们想建立一个独立于语言的服务层,它运行在一个http服务器上,每个thrift服务都可以通过ActiveMQ与其他thrift服务通信。到目前为止,我还找不到任何其他人试图实施这一计划。我很好奇其他人会如何实现这个,以及是否有这样做的文档

当前的原型使用一个简单的python服务器,该服务器承载各种thrift服务。在每个服务调用(即更新设置)中,创建一条ActiveMQ消息并将其发送到特定队列(即一个应用程序的设置服务向另一个应用程序发送更新消息)。为设置服务的每个实现创建一个服务侦听器,该服务能够扫描适当的队列并检测何时发送相关消息。然后,此侦听器使用Thrift访问该特定应用程序的适当服务

我正试图找到一种方法,允许服务为thrift对象提供服务,但也可以接收ActiveMQ消息,而不需要创建这些侦听器,但我一直无法找到用于此目的的任何资源


谢谢

根据您的描述,您至少有以下选项:

(1)使用序列化部分将序列化消息写入队列。侦听器将它们反序列化,并将它们提供给(本地)处理器实例,该实例将触发其余的处理

(2)为其编写一个专用传输,以支持ActiveMQ。它可能有助于更好地封装序列化/反序列化内容,并为客户机/处理器提供常用的调用接口

还有两个小贴士:

  • 看一看,它演示了与ZeroMQ的组合
  • 请查看单向方法的节约文档。您会发现它们对于消息排队场景非常有用

将传入数据馈送到本地处理器实例是什么意思?好的,这是我不久前写的一段代码来证明这一点。它是用Delphi编写的,但应该足够简单,以便您能够将其翻译成您选择的任何其他语言。在这种特殊情况下,请求数据作为JSON传递,因此使用JSON协议

class procedure TTextToolJsonServer.Process( const stmIn, stmOut : TStream);
var handler   : Samples.TTextTool.Iface;
    processor : IProcessor;
    protIn, protOut : IProtocol;
begin
  protIn  := TJSONProtocolImpl.Create(
               TStreamTransportImpl.Create(
                 TThriftStreamAdapterDelphi.Create( stmIn, FALSE), nil));

  protOut := TJSONProtocolImpl.Create(
               TStreamTransportImpl.Create(
                 nil, TThriftStreamAdapterDelphi.Create( stmOut, FALSE)));

  handler   := TTextToolHandler.Create;
  processor := Samples.TTextTool.TProcessorImpl.Create( handler);
  processor.Process( protIn, protOut);
end;

你能详细介绍一下给他们一个本地处理器实例吗。