如何在天蓝色服务总线中按下最大长度消息

时间:2016-11-30 17:03:38

标签: azure jms azureservicebus servicebus

我想将消息推送到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.&#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> 

我不清楚它是什么意思,我应该如何解决这个问题。请帮我解决这个问题。?

1 个答案:

答案 0 :(得分:4)

maxSizeInMegabytes是指队列中消息的最大总大小,而不是单个消息大小。 标准层的单个邮件大小不能超过256KB,高级层的单个邮件大小不得超过1MB(包括两者的标头)。

如果您希望发送大于Maxim邮件大小的邮件,则必须实施声明检查模式(http://www.enterpriseintegrationpatterns.com/patterns/messaging/StoreInLibrary.html)或使用为您执行此操作的框架。实现自己将意味着将有效负载存储为存储blob并且消息将包含Uri。