2016-11-30 8 views
2

メッセージを空白のサービスバスにプッシュしたい、サイズ3MBと言う。このため は、私が書いている:私は次の例外を取得しています空白のサービスバスで最大長のメッセージをプッシュする方法

QueueInfo queueInfo = new QueueInfo("sq-jcibe-microservice-plm-qa"); 
long maxSizeInMegabytes = 5120; 
queueInfo.setMaxSizeInMegabytes(maxSizeInMegabytes); 
service.updateQueue(queueInfo); 
service.sendQueueMessage("sq-jcibe-microservice-plm-qa", brokeredMessage); 

com.microsoft.windowsazure.exception.ServiceException: com.sun.jersey.api.client.UniformInterfaceException: PUT https://sb-jcibe-microservice-qa.servicebus.windows.net/sq-jcibe-microservice-plm-qa?api-version=2013-07 returned a response status of 400 Bad Request 
Response Body: <Error><Code>400</Code><Detail>SubCode=40000. For a Partitioned Queue, ordering is supported only if RequiresSession is set to true.&#xD; 
Parameter name: SupportOrdering. TrackingId:59bb3ae1-95f9-45e1-8896-d0f6a9ac2be8_G3, SystemTracker:sb-jcibe-microservice-qa.servicebus.windows.net:sq-jcibe-microservice-plm-qa, Timestamp:11/30/2016 4:52:22 PM</Detail></Error> 

私はそれが何を意味するのか、そしてどのように問題を解決すべきかを理解していません。このシナリオで私を助けてください。

答えて

3

maxSizeInMegabytesは、個々のメッセージサイズではなく、キュー上のメッセージの最大合計サイズを指します。 個々のメッセージサイズは、標準層の場合は256KB、プレミアム層の場合は1MB(両方のヘッダーを含む)を超えることはできません。

Maximメッセージサイズを超えるメッセージを送信する場合は、クレームチェックパターン(http://www.enterpriseintegrationpatterns.com/patterns/messaging/StoreInLibrary.html)を実装するか、それを行うフレームワークを使用する必要があります。自分自身を実装することは、ペイロードをStorage blobとメッセージとして格納する行の中に、Uriを含むことを意味します。

関連する問題