0

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

所以我很茫然..你能帮我走吗?我尝试使用PHPamqplib,但在连接建立期间访问已经运行的 activeMQ 代理“Invalid frame type 65 in ....AbstractConnection.php:571”时出现错误。

<?php
namespace Test;
require_once __DIR__.'/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPSocketConnection;
use PhpAmqpLib\Message\AMQPMessage;

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# 中工作时,我有点不知所措,缺少什么以及这个错误的根源。任何帮助将不胜感激!

4

1 回答 1

2

根据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 一起工作的原因。

于 2020-07-03T18:14:58.653 回答