AMQP 1.0 Qpid BytesMessage 大负载
AMQP 1.0 Qpid BytesMessage large payload
我正在使用 qpid 客户端 Java 库(版本 0.32)来集成 AMQP 1.0。
我必须传输一个字节数组(小于 5mb),但此消息从未传递给订阅者。我通过 wireshark 记录了帧,传输帧标记为 [TCP Window Full]。图书馆可能没有划分有效载荷。代码是否正确?我需要配置什么?
经纪人:Apache Apollo 1.7.1(默认配置)
pom.xml
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jms_1.1_spec</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.apache.qpid</groupId>
<artifactId>qpid-amqp-1-0-client-jms</artifactId>
<version>0.32</version>
</dependency>
<dependency>
<groupId>org.apache.qpid</groupId>
<artifactId>qpid-amqp-1-0-client</artifactId>
<version>0.32</version>
</dependency>
<dependency>
<groupId>org.apache.qpid</groupId>
<artifactId>qpid-amqp-1-0-common</artifactId>
<version>0.32</version>
</dependency>
Java代码
ConnectionFactoryImpl amqpFactory = new ConnectionFactoryImpl(...);
ConnectionImpl connection = amqpFactory.createConnection();
connection.start();
SessionImpl session = connection.createSession(...);
MessageProducerImpl producer = session.createProducer(new TopicImpl("topic://test"));
BytesMessageImpl bytesMessage = session.createBytesMessage();
//generate sample data
StringBuilder s = new StringBuilder();
for (int i = 0; i < 10000; i++) {
s.append(UUID.randomUUID().toString());
}
bytesMessage.writeBytes(s.toString().getBytes());
producer.send(bytesMessage);
所以您基本上已经找到了我所知道的每一个已弃用的 AMQP 软件,所以我猜您的问题来自一个旧的且未维护的软件。
ActiveMQ Apollo 已被弃用且无人维护好几年了,您应该使用 ActiveMQ Artemis,它是 ActiveMQ 项目中最活跃的代理。
对于 AMQP 1.0 JMS 客户端,您应该使用 Qpid JMS 客户端,它实现了当前的 AMQP -> JMS 映射规范并得到积极维护。
我正在使用 qpid 客户端 Java 库(版本 0.32)来集成 AMQP 1.0。
我必须传输一个字节数组(小于 5mb),但此消息从未传递给订阅者。我通过 wireshark 记录了帧,传输帧标记为 [TCP Window Full]。图书馆可能没有划分有效载荷。代码是否正确?我需要配置什么?
经纪人:Apache Apollo 1.7.1(默认配置)
pom.xml
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jms_1.1_spec</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.apache.qpid</groupId>
<artifactId>qpid-amqp-1-0-client-jms</artifactId>
<version>0.32</version>
</dependency>
<dependency>
<groupId>org.apache.qpid</groupId>
<artifactId>qpid-amqp-1-0-client</artifactId>
<version>0.32</version>
</dependency>
<dependency>
<groupId>org.apache.qpid</groupId>
<artifactId>qpid-amqp-1-0-common</artifactId>
<version>0.32</version>
</dependency>
Java代码
ConnectionFactoryImpl amqpFactory = new ConnectionFactoryImpl(...);
ConnectionImpl connection = amqpFactory.createConnection();
connection.start();
SessionImpl session = connection.createSession(...);
MessageProducerImpl producer = session.createProducer(new TopicImpl("topic://test"));
BytesMessageImpl bytesMessage = session.createBytesMessage();
//generate sample data
StringBuilder s = new StringBuilder();
for (int i = 0; i < 10000; i++) {
s.append(UUID.randomUUID().toString());
}
bytesMessage.writeBytes(s.toString().getBytes());
producer.send(bytesMessage);
所以您基本上已经找到了我所知道的每一个已弃用的 AMQP 软件,所以我猜您的问题来自一个旧的且未维护的软件。
ActiveMQ Apollo 已被弃用且无人维护好几年了,您应该使用 ActiveMQ Artemis,它是 ActiveMQ 项目中最活跃的代理。
对于 AMQP 1.0 JMS 客户端,您应该使用 Qpid JMS 客户端,它实现了当前的 AMQP -> JMS 映射规范并得到积极维护。