我正在使用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);
答案 0 :(得分:0)
所以你基本上已经登陆了我所知道的每一个不赞成使用的AMQP软件,所以我猜你的问题来自于一个旧的和未维护的软件。
ActiveMQ Apollo已经被弃用了几年,而不是你应该使用ActiveMQ Artemis这是ActiveMQ项目中最活跃的代理。
对于AMQP 1.0 JMS客户端,您应该使用实现当前AMQP的Qpid JMS客户端 - &gt; JMS映射规范并得到积极维护。