我想将消息推送到azure服务总线,比如大小为3 MB。 为此,我写道:
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.
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>
我不清楚它是什么意思,我应该如何解决这个问题。请帮我解决这个问题。?
答案 0 :(得分:4)
maxSizeInMegabytes
是指队列中消息的最大总大小,而不是单个消息大小。
标准层的单个邮件大小不能超过256KB,高级层的单个邮件大小不得超过1MB(包括两者的标头)。
如果您希望发送大于Maxim邮件大小的邮件,则必须实施声明检查模式(http://www.enterpriseintegrationpatterns.com/patterns/messaging/StoreInLibrary.html)或使用为您执行此操作的框架。实现自己将意味着将有效负载存储为存储blob并且消息将包含Uri。