Apache Qpid Proton client libraryを使用して、特定のmax_frame_size
でAMQP 1.0接続を開くだけです。これは、実世界のアプリケーションではなく、テストスイート内にあります。Qpid Proton AMQP 1.0クライアントライブラリで接続の `max_frame_size`を設定する
Javaライブラリは、Cライブラリや他の言語用のさまざまなバインディングよりも高度なようです。そのため、私はJavaを使い始めました。残念ながら、私はこのパラメータを設定する方法を見つけることができませんが、方法が必要です:max_frame_size
を取得または設定するためのこのTransport
classがあります。
私は最初にMessenger APIを試した後、Engine APIで試してみました。私はトランスポートインスタンスにアクセスする方法を理解できませんでした。 Engine APIの場合は、Connection.getTransport()
があり、それを試しましたが、この関数を呼び出すときにはNULLです。私は、私は、Javaの非常に限られた知識を持って認める
private void do_test_with_frame_size(int frame_size, int payload_size) {
Connection conn = Connection.Factory.create();
Transport transport = conn.getTransport();
transport.setMaxFrameSize(frame_size);
Session session = conn.session();
Sender sender = session.sender("sender");
conn.open();
session.open();
sender.open();
if (sender.getCredit() > 0) {
String uri = System.getProperty("broker_uri");
assertNotNull(uri);
String address = String.format("%s/fragmentation-%d-%d",
uri, frame_size, payload_size);
Message message = Proton.message();
message.setAddress(address);
message.setBody(new AmqpValue(new byte[payload_size]));
byte[] msgData = new byte[1024];
int length;
while(true) {
try {
length = message.encode(msgData, 0, msgData.length);
break;
} catch(BufferOverflowException e) {
msgData = new byte[msgData.length * 2];
}
}
byte[] tag = "0".getBytes();
Delivery delivery = sender.delivery(tag);
sender.send(msgData, 0, length);
delivery.settle();
sender.advance();
sender.close();
sender.getSession().close();
sender.getSession().getConnection().close();
}
}
:
は、ここに私の最後のテストです。このパラメータを設定することさえ可能であることを確認してください。もしそうなら、私にどのように教えてください?
ありがとうございます。「transport.bind(connection)」を使用していただきありがとうございます。テストプログラムの残りの部分が動作しない(TCP接続を開くことさえできない...)ので、私はあなたの答えを受け入れるだろう。 Unforunately、私はすでにこのクライアントライブラリとあまりにも多くの時間を費やし、代わりに.NETライブラリに切り替えました。 –