使用 AMQP 从 PHP 到 Apache ActiveMQ 的连接出现问题



我尝试上下搜索网络 - 要么他们把我指向RabbitMQ,这是不可能的,因为客户特别要求ActiveMQ/Amazon MQ,这基本上是亚马逊云中的ActiveMQ。其他结果建议使用不同的协议(STOMP( - 我不能这样做,因为客户再次只允许通过AMQP访问

所以我不知所措..你能帮我走吗?我尝试使用 PHPamqplib,但访问已在运行的 activeMQ 代理"无效的帧类型 65 在 ....AbstractConnection.php:571"在连接建立期间。

<?php
namespace Test;
require_once __DIR__.'/vendor/autoload.php';
use PhpAmqpLibConnectionAMQPSocketConnection;
use PhpAmqpLibMessageAMQPMessage;
class Test {
private $host='192.168.3.66';
private $port=5672;
private $user='guest';
private $password='guest';
protected $connection;
protected $channel;
public function __construct() {
$this->connection=new AMQPSocketConnection($this->host, $this->port, $this->user,$this->password);
$this->channel=$this->connection->channel();
}
...

在构造函数的执行过程中,当我构建 Test 类的实例以发送消息时,错误已经发生在这里。在您询问之前,我尝试了库提供的不同 AMQP 连接类型 - 错误总是相同的。老实说,当它使用 amqpnetlite 库在 C# 中工作时,我有点不知道缺少什么以及此错误源于何处。任何帮助将不胜感激!

根据README.md php-amqplib支持AMQP 0.9.1。但是,ActiveMQ支持AMQP 1.0。不幸的是,这两个协议不兼容。如果你想与ActiveMQ或Amazon MQ通信,你需要找到一个支持1.0的PHP AMQP客户端。根据这个线程,没有计划在php-amqplib中支持AMQP 1.0。

amqpnetlite客户端支持AMQP 1.0,这就是它与ActiveMQ配合使用的原因。

最新更新