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

2024-01-23

背景

我有两个服务需要通过消息队列相互通信。一种是用 PHP 编写的遗留服务,另一种是用 Java 编写的。迟早,PHP 服务将被 Java 重写。它们当前相互通信的方式是写入共享数据库,由其他服务轮询。这就是我试图摆脱并用消息队列替换的内容。

Problem

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

可能的解决方案

    1.

我想出的解决方案是使用以下命令将来自 PHP/Stomp 的消息排队jms-json-object转型。这些消息是特制的 JSON,这样当它们在 Java 中使用时出队时readObject,它们可以使用以下方法重建为完整的对象XStream https://x-stream.github.io。这种重建发生在内部ActiveMQ http://activemq.apache.org我只需要确保必要的aliases https://x-stream.github.io/alias-tutorial.html and 转换器 https://x-stream.github.io/converter-tutorial.html已就位。当我们最终用 Java 替换 PHP 组件时,发送消息只需使用writeObject.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 ActiveMQ/Stomp 在 PHP 和 Java 之间进行通信 的相关文章

  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • java.lang.IllegalStateException:提交响应后无法调用 sendRedirect()

    这两天我一直在尝试找出问题所在 我在这里读到我应该在代码中添加一个返回 我做到了 但我仍然得到 java lang IllegalStateException Cannot call sendRedirect after the respo
  • 将 MOXy 设置为 JAXB 提供程序,而在同一包中没有属性文件

    我正在尝试使用 MOXy 作为我的 JAXB 提供程序 以便将内容编组 解组到 XML JSON 中 我创建了 jaxb properties 文件 内容如下 javax xml bind context factory org eclip
  • PHP preg_filter 返回意外的长值

    尝试在 Woocommerce 中删除标签并过滤值 但无法以正确的格式获取它 有东西有腥味 我正在使用WC gt cart gt get cart subtotal 来检索该值 在此示例中 我的值是 2 429kr 原始返回值是 span
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • 如何访问JAR文件中的Maven资源? [复制]

    这个问题在这里已经有答案了 我有一个使用 Maven 构建的 Java 应用程序 我有一个资源文件夹com pkg resources 我需要从中访问文件 例如directory txt 我一直在查看各种教程和其他答案 但似乎没有一个对我有
  • PHP 中只保留数组的前 N ​​个元素? [复制]

    这个问题在这里已经有答案了 有没有办法只保留数组的前 N 个 例如 10 个 元素 我知道有array pop 但是有没有更好 更优雅的方法呢 您可以使用array slice http php net array slice or arr
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • SQL 最近日期

    我需要在 php 中获取诸如 2010 04 27 之类的日期作为字符串 并在表中找到最近的 5 个日期 表中的日期保存为日期类型 您可以使用DATEDIFF http dev mysql com doc refman 5 1 en dat
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • CURL 中的 data-urlencode 是什么意思?

    我搜索了很多个小时试图弄清楚 php curl 中的 data urlencode 是什么 我尝试过这个 但我认为这是不对的 xmlpost object1 file https www lob com goblue pdf 在文档中是 d
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • 如何在 PHP 中从 IP 地址/国家/地区名称查找时区 ID?

    谁能告诉我 PHP 中是否有任何方法可以从 IP 地址或国家 地区名称获取时区区域 例如 亚洲 加尔各答 描述 我正在尝试根据他 她的国家 地区设置用户时区 我从他的 IP 地址获取用户所在国家 地区 但我需要该国家 地区的时区区域 例如
  • 找不到符号 NOTIFICATION_SERVICE?

    package com test app import android app Notification import android app NotificationManager import android app PendingIn
  • 使用正则表达式提取两个短语之间的所有单词[重复]

    这个问题在这里已经有答案了 我正在尝试使用以下正则表达式提取两个短语之间的所有单词 b item W w W 0 2 1 one W w W 0 3 business b b item W w W 0 2 3 three W w W 0 3
  • ini_set 'session.gc_maxlifetime' 为 1 天

    If I do ini set session gc maxlifetime 86400 这是否意味着用户可以将浏览器留在同一页面 非活动状态 最多 1 天 而不必担心会话被垃圾收集并被注销 如果服务器配置不支持此功能会发生什么 它会给我一
  • 为什么 Composer 降级了我的包?

    php composer phar update这样做了 删除了 2 3 0 软件包并安装了整个 2 2 5 Zend Framework php composer phar update Loading composer reposito
  • 对具有混合类型值的数组进行数字排序

    我有一个像这样的混合数组 fruits array lemon Lemon 20 banana apple 121 40 50 然后申请sort 其功能如下 sort fruits SORT NUMERIC foreach fruits a

随机推荐

  • 如何将 DLL 链接到我的项目?错误 LNK2019:无法解析的外部符号

    我有一个文件foo h有各种函数声明 所有这些功能都在一个文件中实现foo dll 但是 当我包含 h 文件并尝试使用任何函数时 我收到错误 bar obj error LNK2019 unresolved external symbol
  • 替换单词和字符串 pandas

    dataframe pd DataFrame Date This 1A1619 person BL171111 the A 1 24 dont Z112 but NOT 1 22 2001 mix 1A25629Q88 or A13B ok
  • 通过 tqdm.write() 重定向 python 脚本中的打印命令

    我在用着tqdm在 Python 中显示脚本中的控制台进度条 但是 我必须调用函数print消息也发送到控制台 我无法更改 一般来说 在控制台中显示进度条时写入控制台会弄乱显示 如下所示 from time import sleep fro
  • 将 tqdm 与并发.futures 一起使用吗?

    我有一个多线程函数 我想要一个状态栏来使用tqdm 有没有一种简单的方法来显示状态栏ThreadPoolExecutor 让我困惑的是并行化部分 import concurrent futures def f x return f 2 my
  • 检查引荐来源网址

    我用它来检查某人是否来自 Reddit 但它不起作用 var ref document referrer if ref match http www reddit com gi alert You came from Reddit else
  • JavaScript 类型的最大大小?

    通过研究 javascript 类型 我试图找出某些数据类型的最大存储大小是多少 例如 我设置了一个快速递归算法来增加 var 大小 直到浏览器崩溃 最终在我现有的 chrome 版本上 字符串接近 128mb 或者可能是 256 我一直在
  • DynamoDb 如何查询全局二级索引?

    我创建了一个如下表 其中全局二级索引为 Em 代表电子邮件 TableName Users KeySchema AttributeName Ai KeyType HASH Partition key AttributeName Ui Key
  • 如何使用 Identity 在 ASP.NET Core 项目中禁用 HTTPS?

    我最近在 Visual Studio 2019 中创建了一个 ASP NET Core 3 0 Web 应用程序项目 启用了 Docker 但我认为这不相关 并且在包含 ASP NET Identity 时似乎无法禁用 HTTPS个人用户帐
  • 找不到目标“x86_64-apple-ios-simulator”的模块

    我有我的自定义框架 它在 XCode 10 中正常工作 我在 XCode 11 beta 3 中重建它 然后集成到应用程序中 并收到以下错误 找不到目标 x86 64 apple ios simulator 的模块 MyCustomFram
  • 生成7位随机数

    如何产生 100 万到 1000 万之间的随机数 rand 10 有效 我试过了rand 1 10 但这不起作用 取你的基数 1 000 000 并添加一个从 0 到最大起始数的随机数 1 000 000 Random rand 10 00
  • Log4Net配置日志级别

    我该如何制作Log4net http logging apache org log4net index html只记录Info级别的日志 这可能吗 只能设置一个阈值吗 这就是我所拥有的 它按照我的预期记录了信息及以上内容 我能做些什么让它只
  • 无法导入Pytorch [WinError 126]找不到指定的模块

    我正在尝试在 Windows 10 上进行 Pytorch Torchvision 的基本安装和导入 我安装了 Anaconda 并创建了一个名为 photo 的新虚拟环境 我打开 Anaconda 提示符 激活环境 然后运行 photo
  • 如何在 jQuery 中获取前一个 `` 的值?

    如何获取上级的ID td s td
  • 如何在谷歌计算引擎上打开端口

    在谷歌计算引擎上 我可以通过 localhost 访问服务器上的端口 但我无法使用来自同一服务器或外部客户端计算机的 IP 地址访问同一端口 我尝试在Web控制台页面上创建新的防火墙规则 并且可以从Linux命令中看到它 但端口8888仍然
  • 是否可以在不使用助手的情况下在车把模板中分配参数值?

    我正在尝试在模板中分配值 想法是执行以下操作 if author className classA lt trying to implement this line else className classB if div class di
  • 如何在 HTML 中嵌入流媒体视频 (rtmp)

    如何在 HTML 中嵌入流媒体视频 rtmp 链接rtmp http 42 116 119 44 4022 udp 225 1 2 244 30120 http 42 116 119 44 4022 udp 225 1 2 244 3012
  • 将 (u)int64_t 转换为 NSNumber

    所以本质上我的问题是这样的 我正在使用 uint64 t 对象作为键创建一个 NSMutableDictionary 还有比这样做更好的方法来创建它们吗 uint64 t bob 7 NSNumber bobsNumber if LP64
  • Android Studio 插件 Fabric 中出现异常

    我已经安装了最新的面料插件 https get fabric io beta对于 Android Studio 它运行良好一段时间 更新到 Android Studio 1 1 0 后 我在事件日志中看到以下内容 以及 NullPointe
  • 括号:如何使自动完成/自动缩进工作?

    括号看起来不错 但我在使用它时遇到两个问题 First 我通常这样自动完成标签 div class PRESS TAB becomes div class class div 我无法实现这一点 我尝试下载一堆插件 但没有任何作用 Secon
  • 使用 ActiveMQ/Stomp 在 PHP 和 Java 之间进行通信

    背景 我有两个服务需要通过消息队列相互通信 一种是用 PHP 编写的遗留服务 另一种是用 Java 编写的 迟早 PHP 服务将被 Java 重写 它们当前相互通信的方式是写入共享数据库 由其他服务轮询 这就是我试图摆脱并用消息队列替换的内