AMQP 1.0 Qpid BytesMessage большая полезная нагрузка - PullRequest
0 голосов
/ 27 апреля 2018

Я использую клиентскую библиотеку 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);

1 Ответ

0 голосов
/ 28 апреля 2018

Таким образом, вы в основном использовали все устаревшие версии программного обеспечения AMQP, о которых я знаю, поэтому я предполагаю, что ваша проблема связана с одним из старых и не поддерживаемых компонентов программного обеспечения.

ActiveMQ Apollo больше не поддерживается как устаревший уже несколько лет, вместо этого вам следует использовать ActiveMQ Artemis , который является самым активным брокером в проекте ActiveMQ.

Для клиента AMQP 1.0 JMS вы должны использовать клиент Qpid JMS , который реализует текущую спецификацию отображения AMQP -> JMS и активно поддерживается.

...