【问题标题】:AWSSQS trying to create queue and get messagesAWSSQS 尝试创建队列并获取消息
【发布时间】:2015-02-01 21:19:09
【问题描述】:

我正在尝试连接到 AWS SQS 以创建一个新队列并获取我放置在另一个队列中的消息。这是我正在使用的代码:

    AWSSQS *sqs=[[AWSSQS alloc] initWithConfiguration:configuration];

    AWSSQSCreateQueueRequest *createQueue = [[AWSSQSCreateQueueRequest alloc] init];
    [createQueue setQueueName:@"TEST_Q2_NEW_3"];

    BFTask *answer = [sqs createQueue:createQueue];       
    NSLog(@"Status queue creation: %@ %@", answer.result, answer.error);

    AWSSQSReceiveMessageRequest *receiveMessageRequest = [[AWSSQSReceiveMessageRequest alloc] init];      
    receiveMessageRequest.QueueUrl = @"https://sqs.eu-west-1.amazonaws.com/xxxxxxxxxxxx/TEST_Q";

    answer = [sqs receiveMessage:receiveMessageRequest];
    NSLog(@"Status messages received %@ %@", answer.result, answer.error);

队列 TEST_Q2_NEW_3 已创建,但日志消息为:

状态队列创建:(null)(null)

未获取任何消息,但在 SQS 管理控制台中,某些消息的状态为 Messages in Flight。但是,日志消息是:

收到的状态消息 (null) (null)

我错过了什么?

【问题讨论】:

    标签: objective-c amazon-web-services amazon-sqs


    【解决方案1】:

    原来我并没有完全理解 BFTasks。声明:

    answer = [sqs receiveMessage:receiveMessageRequest];
    

    实际上在后台启动一个进程,当打印日志消息时,此任务尚未完成。要继续处理结果,您必须使用 continueWithBlock。接收消息功能的工作代码如下所示:

    answer = [sqs receiveMessage:receiveMessageRequest];
    [answer continueWithBlock:^id(BFTask *task) {
        if (task.isCancelled) {
            NSLog(@"Status received messages  %@ %@", answer.result, answer.error);
        } else if (task.error) {
            NSLog(@"Status received messages  %@ %@", answer.result, answer.error);
        } else {
            NSLog(@"Status received messages  %@ %@", answer.result, answer.error);
        }
        return nil;
    }];
    

    这是我找到答案的地方: BoltsFramework/Bolts-iOS - GitHub

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 2021-11-07
      • 1970-01-01
      • 1970-01-01
      • 2020-04-18
      • 2022-06-10
      相关资源
      最近更新 更多