繁体   English   中英

使用ActiveMQ / Stomp在PHP和Java之间进行通信

[英]Communicating between PHP and Java using ActiveMQ/Stomp

背景

我有两个服务需要通过消息队列相互通信。 一个是用PHP编写的遗留服务,另一个是Java。 不久之后,PHP服务将用Java重写。 他们彼此通信的当前方式是写入共享数据库,其他服务轮询。 这就是我试图摆脱并替换为消息队列。

问题

我现在正在进行的通信是从PHP服务到Java服务。 它需要发送一个相对复杂的对象(字符串和整数以及字符串和整数的列表和映射)。 理想情况下,该解决方案在PHP中是可行的,在Java中是理想的,因为这将成为该项目的遗产。

可能的解决方案

    1。

我提出的解决方案是使用jms-json-object转换从PHP / Stomp中排队消息。 消息是特制的JSON,这样当它们使用readObject在Java中出列时,可以使用XStream将它们重建为完整对象。 这种重建发生在ActiveMQ的内部,我只需要确保必要的别名转换器就位。 当我们最终用Java替换PHP组件时,发送消息只是使用writeObject

有一个用于PHP的STOMP客户端,

http://pecl.php.net/package/stomp

在我看来,你应该保持组件交互不受特定实现的影响。 ActiveMQ是错误的,许多系统将其删除,转而使用RabbitMQ或Sun OpenMQ。 您必须避免在PHP中编写“发送消息”例程,而是创建“SendMessage”servlet,并使用curl发布JSON编码的消息。 然后servlet将使用连接工厂等。只需一点开销,您就可以从任何mq-server特定代码中释放PHP组件。 您可以使用带有JSON加载的TextMessage,使用Jackson轻松编码和解码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM