1

Solace .NET API を使用して、大きなテキスト メッセージを Solace キューに発行しようとしています。そして、別の Java アプリケーションでそのキューをサブスクライブしました。メッセージのサイズが小さい場合は、問題なく動作します。ただし、メッセージが大きい場合、サブスクライバーはメッセージを読むことができません。

        messageToPublish = readFile();
        IMessage message = ContextFactory.Instance.CreateMessage();
        message.Destination = queue;
        message.DeliveryMode = MessageDeliveryMode.Direct;
        //message.BinaryAttachment = Encoding.ASCII.GetBytes(messageToPublish);
        SDTUtils.SetText(message, messageToPublish);
        session.Send(message); 

session.send(message) を同期的に実行する方法はありますか?

ありがとう。

4

2 に答える 2

1

Solace アプライアンス/仮想メッセージ ルーター (VMR) がメッセージを破棄した可能性があります。

アプライアンス/VMR では、キューの統計を調べて、メッセージに何が起こったのかを判断できます。SolAdmin でキューの名前をダブルクリックして、次のウィンドウを表示します。

SolAdmin - 入力スプール廃棄統計

このスクリーンショットでは、スプール クォータを超えたため、メッセージが破棄されました。(迅速な複製のために非常に小さな割り当てを構成したことに注意してください。)


MessageDeliveryMode.Direct を使用することを選択したことに注意してください。これは、メッセージが信頼できるが保証されていないチャネルを介して配信されることを意味します。ダイレクト メッセージが配信されない場合、否定応答はありません。

メッセージを保証する必要がある場合は、MessageDeliveryMode.Persistent を使用する必要があります。メッセージを配信できない場合、RejectedMessageError セッション イベントがトリガーされ、問題が発生したことが示されます。詳細については、Solace .NET API の AdPubAck.cs サンプル コードを参照してください。

于 2015-10-19T08:48:01.320 に答える