根据您的描述,您至少可以选择,恕我直言:
(1) 利用序列化部分,将序列化后的消息写入队列。侦听器将它们反序列化并将它们提供给(本地)处理器实例,该实例触发其余的处理。
(2) 为它编写一个专用的传输来支持ActiveMQ。它可能有助于更好地封装序列化/反序列化的东西,并为客户端/处理器提供通常的调用接口。
还有两个提示:
- 看看THRIFT-812,它演示了与 ZeroMQ 的组合
- 查看 Thrift 文档中的
oneway
方法。您会发现它们对于消息队列方案非常有用。
将传入数据输入本地处理器实例是什么意思?好的,这是我前段时间写的一段代码来证明这一点。它是用 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;