[英]Azure ServiceBus: Client.Receive() returns null for messages > 64 KB
我正在使用一个BrokeredMessage
其中包含带有序列化对象的Stream
。 根据文档,流是主体的一部分,而不是标头,标头限制为64 KB。 大约67 KB的总消息远低于ServiceBus队列的消息大小256 KB的限制 。
我能够发送一条消息,它以正确的消息大小显示在队列中。
发出后Receive
-command该分组被从队列中删除并且计数器相应地递减。 但是,该操作遇到超时并返回null
指针而不是BrokeredMessage
。
我尝试了一个大小为42 KB的数据包,并且一切正常-发送,接收和反序列化。
问:为什么它不能与较大的消息一起使用?如何使它起作用?
编辑0
我尝试接收填充有随机模式的byte
数组:
var bm = new BrokeredMessage(new byte[n])
n
= 63500起作用。 ( 发送: HeaderSize
= 53, BodySize
= 63572; 接收: HeaderSize
= 139, BodySize
= 63572) n
= 64000 不起作用 。 ( 发送: HeaderSize
= 54, BodySize
= 64072; 接收: null
) 编辑1
@David Pfeffer就是这么简单:
var queueWork = QueueClient.CreateFromConnectionString(@"Endpoint=sb://***/;SharedAccessKeyName=***;SharedAccessKey=***", path, ReceiveMode.ReceiveAndDelete);
BrokeredMessage message = queueWork.Receive();
我无法重现。 这是我的示例代码:
var client = QueueClient.CreateFromConnectionString("Endpoint=sb://***.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=***", "queue", ReceiveMode.ReceiveAndDelete);
client.Send(new BrokeredMessage(new byte[100000]));
var msg = client.Receive();
// msg is happy
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.