0

我有一个将消息提交到远程RMQ服务器上的交换的 Objective C 提供程序。我有一个消费者正在监听绑定到该交换的队列。我正在使用扇出。当从 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];

}
4

1 回答 1

0

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

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

我很想看看如果你删除这[conn close];条线会发生什么。情况并非如此,但内部排队可能不太正确,并且它过早地关闭了连接。

于 2016-08-12T20:32:08.873 回答