AMQP 1.0 Qpid BytesMessage大型有效负载

时间:2018-04-27 16:41:18

标签: java tcp amqp qpid

我正在使用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);

1 个答案:

答案 0 :(得分:0)

所以你基本上已经登陆了我所知道的每一个不赞成使用的AMQP软件,所以我猜你的问题来自于一个旧的和未维护的软件。

ActiveMQ Apollo已经被弃用了几年,而不是你应该使用ActiveMQ Artemis这是ActiveMQ项目中最活跃的代理。

对于AMQP 1.0 JMS客户端,您应该使用实现当前AMQP的Qpid JMS客户端 - &gt; JMS映射规范并得到积极维护。