Vertx:如何使用deliveryoptions将消息从一个Verticle转发到另一个Verticle?

时间:2017-08-24 11:13:29

标签: vert.x

我向一个Verticle发送消息,而这个Verticle又可能需要将它转发给其他Verticle。我不想编写冗余代码来复制邮件中的标题,并创建另一个邮件对象并传递它。有没有办法在vert.x中转发消息,deliveryOptions完好无损?

2 个答案:

答案 0 :(得分:0)

  

使用DeliveryOptions,您可以在Verticles之间传输消息。

请考虑以下示例:

// MainVerticle将接收数据,我们将发送到MessagingVerticle

select *
from t
where (col1, col2) in (
    select (a,b)
    from (
        select unnest(array['a','b','c']), unnest(array[1,2,3])
    ) s (a,b)
)

//将这些消息发送到MessagingVerticle

SELECT q.Continent as continent, SUM(IF(q.qntStadiuns > 2, 1, 0))/COUNT(*) * 100 as percent
FROM
    (SELECT Continent, Country, COUNT(*) as qntStadiuns
    FROM tableName
    WHERE Stadium = true
    GROUP BY Continent, Country) AS q
GROUP BY continent
  

我希望这会对你有所帮助:)

答案 1 :(得分:0)

你想要的并不是完全可能的,但如果你只对标题感兴趣,那么转发是非常简单的。您可以在一个方法调用中设置标头。但是,您无法通过将整个消息对象传递给send方法来转发它。

这适合我。

vertx.eventBus().send("forwardingAddress",
                    message.body(),new DeliveryOptions()
                        .setHeaders(message.headers()));