当前位置: 首页 > 编程语言 > C#

C#中无法访问AmazonSQS消息属性分享

时间:2023-04-10 15:03:01 C#

C#中无法访问AmazonSQS消息属性这些消息根据文本内容和消息属性进行一些逻辑处理。我可以使用文字和属性在SQS队列上成功创建消息,但我在读取消息属性时遇到问题!我确信我的消息创建过程是正确的,并且我可以在AWSSQS控制台中看到队列的属性。我只是不明白为什么我不能读回这些属性。我创建消息的代码:IAmazonSQSsqs=AWSClientFactory.CreateAmazonSQSClient();varsendMessageRequest=newSendMessageRequest();sendMessageRequest.QueueUrl="myURL";DictionaryMessageAttributes=newDictionary();="字符串";messageTypeAttribute.StringValue="HIGH";MessageAttributes.Add("MESSAGEPRIORITY",messageTypeAttribute);sendMessageRequest.MessageAttributes=MessageAttributes;sendMessageRequest.MessageBody="这就是消息正文";sqsque.SendMessage(send)Resage创建了上面的作品和带有属性MESSAGEPRIORITY=HIGH的消息(我可以在SQS控制台中看到消息和属性)。回读消息时(我跳过了显示队列URL等的代码部分):IAmazonSQSsqs=AWSClientFactory.CreateAmazonSQSClient();ReceiveMessageResponsereceiveMessage=newReceiveMessageResponse();ReceiveMessageRequest请求=newReceiveMessageRequest();request.QueueUrl="myURL";receiveMessage=sqs.ReceiveMessage(请求);stringmessageBody=receiveMessage.Messages[0].Body;字典messageAttributes=receiveMessage.Messages[0].MessageAttributes;使用上面的代码,我得到了消息的正文,但是属性是空的!直接使用SQS队列手动创建消息时,我遇到了同样的问题。我不明白为什么?任何帮助都会很棒。非常感谢,好的,所以我想通了。在调用拉消息之前,您需要将属性名称指定为ReceiveMessageRequest对象的属性。因此,上面的代码需要修改为:IAmazonSQSsqs=AWSClientFactory.CreateAmazonSQSClient();ReceiveMessageResponsereceiveMessage=newReceiveMessageResponse();ReceiveMessageRequest请求=newReceiveMessageRequest();//指定属性列表ListAttributesList=newList();("消息优先级");//为请求分配list和QueueURLrequest.MessageAttributeNames=AttributesList;request.QueueUrl="我的网址";//接收消息...receiveMessage=sqs.ReceiveMessage(request);//正文..stringmessageBody=receiveMessage.Messages[0].Body;//...和属性字典messageAttributes=receiveMessage.Messages[0].MessageAttributes;以上对我有用。希望它对某人有用....要在不指定每个属性的情况下检索消息的所有属性,您可以在属性列表中放置“*”或“全部”。像这样://指定属性列表ListAttributesList=newList();AttributesList.Add("*");如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: