如何获得vertx中特定发布的响应?

时间:2018-06-08 17:17:14

标签: rabbitmq vert.x

好的,我有一个微服务用户(A),A发布消息,微服务帖子(B)正在侦听和解析A的事情,当B解析队列时,A需要从中获取的信息B继续其流程。好像我正在向A发出一个GET请求 - >> B,只有兔子。 问题在于A需要在B发布的另一个队列(或同一个队列)中进行侦听,但A如何能够完全消耗B发布的内容。示例微服务A每秒有100个请求,也就是说,队列中发布了100个消息,B消耗了100个消息,你怎么做才能让A完全接收你的回合,因为不是所有的都会带来相同的信息。

`

rabbitClient.start({
val bodyString = gson.toJson( jsonObjectWithTheParametersForTheSearch )
val message = JsonObject().put( "body", bodyString )
                rabbitClient.confirmSelect({ confirmResult ->
                    if (confirmResult.succeeded()) {

                        rabbitClient.basicPublish("", "Queue", message, { pubResult ->
                            if (pubResult.succeeded()) {

                                rabbitClient.waitForConfirms({ waitResult ->
                                    if (waitResult.succeeded()) {

                                        rabbitClient.basicGet( "QueueResponse", true, { getResult ->
                                            if ( getResult.succeeded() ) {
                                                val algo = gson.fromJson( getResult.result().getString( "body"), JsonObject::class.java )
                                                resultHandler!!.handle( Future.succeededFuture( message.getString( "body") ) )
                                            }
                                        })

                                        println("Message published !")
                                    } else {
                                        waitResult.cause().printStackTrace()
                                    }
                                })
                            } else {
                                pubResult.cause().printStackTrace()
                            }
                        })
                    } else {
                        confirmResult.cause().printStackTrace()
                    }
                })
            })

`

所有这些代码都有效,但我怎样才能确保发布者在发布后使​​用他所拥有的消息。

“Queue”是微服务A发布的队列,Microservice使用该队列,并且在消耗它之后,在队列“QueueResponse”中发布消息,然后A应该使用对应于“QueueResponse”的消息。 就像GET请求一样简单,我需要有关某事的信息,我通过id查找它,我需要你返回该id的信息,而不是别人的信息。

0 个答案:

没有答案