【问题标题】:message does not show up on RMQ when sent from iPhone device while Xcode does从 iPhone 设备发送消息时,RMQ 上不显示消息,而 Xcode 则显示
【发布时间】:2016-12-16 03:38:52
【问题描述】:

我有一个 Objective C 提供程序,它向远程 RMQ 服务器上的交换器提交消息。 我有一个消费者正在监听绑定到该交换的队列。我正在使用扇出。 当从 Xcode 运行应用程序一切正常时,消息被发送并且消费者接收它。

但是,当从 iPhone 设备运行应用程序时,消息不会显示在管道的末尾。

这是我的发送方法:

- (void) send {

    RMQConnection *conn = [[RMQConnection alloc] initWithUri:@"amqp://<user>:<pass>@<ip>:5672"
                                                    delegate:[RMQConnectionDelegateLogger new]];



    //RMQConnection *conn = [[RMQConnection alloc] initWithDelegate:[RMQConnectionDelegateLogger new]];

    [conn start];

    id<RMQChannel> ch = [conn createChannel];
    RMQExchange *x = [ch fanout:@"logs"];

    NSString *mobilemsg = @"{\"test\" : \"test\" }";




    [x publish:[mobilemsg dataUsingEncoding:NSUTF8StringEncoding]];
    NSLog(@"Sent %@", mobilemsg);

    [conn close];

}

【问题讨论】:

  • 虽然看起来不像,但我在 URL 上使用 user:password 组合,如下所示: RMQConnection *conn = [[RMQConnection alloc] initWithUri:@"amqp://user:password@: 5672" 委托:[RMQConnectionDelegateLogger new]];
  • 我添加了一个接收方法 - 应用程序确实接收其他非 IOS 客户端发布的消息,进一步看似乎消息从未到达交换器 - 这仅在 IOS 客户端上发生。没有错误信息。
  • 似乎是一些配置错误,但我还不确定我错过了什么。

标签: ios objective-c xcode mobile rmq


【解决方案1】:

首先要检查的一点是:您的 iPhone 与 RabbitMQ 代理在同一个网络上。代理是否在本地网络上的机器上运行?如果是这样,手机是否通过 wifi 连接到该网络?你可以吗?将电话中的 HTTP 客户端连接到与 Rabbit 代理位于同一台机器上的 HTTP 服务器?

尚未在设备上对此客户端进行任何测试,因此您绝对可能遇到了错误。如果您认为是这种情况,请在我们的Issues 页面上提交。

如果您删除 [conn close]; 行,我很想看看会发生什么。不应该是这种情况,但内部队列可能不太正确,并且它过早地关闭了连接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-30
    • 1970-01-01
    相关资源
    最近更新 更多