Я использую клиентскую библиотеку qpid Java (версия 0.32) для интеграции AMQP 1.0.
Я должен передать массив байтов (менее 5 МБ), но это сообщение никогда не доставляется подписчикам. Я записал кадры через 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);