使用Apache Ignite进行基于主题的消息传递| Ignite文档

点燃2023年峰会-按需观看-立即注册!

编辑

使用Apache Ignite进行基于主题的消息传递

概述

点燃式分布式消息传递支持所有节点之间基于主题的集群范围通信。通过指定的消息主题可以分发给订阅了该主题的所有节点或子节点组。

Ignite消息传递基于发布-订阅范式,其中出版商和订阅者与一个共同的话题。当其中一个节点发送消息时A类主题T型,它发布在已订阅的所有节点上T型.

注释

加入集群的任何新节点都会自动订阅集群中其他节点的所有主题(或群集组)已订阅。

点火消息

Ignite中的分布式消息传递功能可通过点火消息接口。你可以得到一个实例属于点火消息如此:

点燃 点燃 = 点火.点燃();

//此群集上的消息传递实例。
点火消息 消息 = 点燃.消息();

//给定集群组上的消息传递实例(在本例中为远程节点)。
点火消息 rmt消息 = 点燃.消息(点燃.集群().对于Remote());

发布消息

发送方法有助于向所有节点发送/发布具有指定消息主题的消息。可以发送消息在里面命令无序的方式。

有序消息

这个sendOrdered(…​)如果希望按消息发送的顺序接收消息,可以使用方法。超时参数传递以指定消息将在队列中停留多长时间,以等待应该发送的消息这条消息。如果超时过期,则该节点上给定主题尚未到达的所有消息都将被忽略。

无序消息

这个发送(…​)方法不能保证消息的顺序。这意味着,当您按顺序发送消息时A类消息B类,不能保证目标节点首先接收A类然后B类.

订阅邮件

侦听方法有助于侦听/订阅消息。调用这些方法时,具有指定消息的侦听器主题在所有(或子组)节点上注册,以侦听新消息。使用listen方法时,谓词是它返回一个布尔值,告诉侦听器继续或停止侦听新消息。

本地监听

这个localListen(…​)方法仅在本地节点上注册具有指定主题的消息侦听器并侦听来自中任何节点的消息给定集群组。

远程监听

这个远程收听(…​)方法在中的所有节点上注册具有指定主题的消息侦听器给定群集组并侦听来自中任何节点的消息集群组。

例子

点燃 点燃 = 点火.点燃();

点火消息 rmt消息 = 点燃.消息(点燃.集群().对于Remote());

//为所有远程节点上的有序消息添加侦听器。
rmt消息.远程监听(“MyOrderedTopic” (节点ID 消息) -> {
    系统.外面的.打印ln(“收到订购消息[msg=” + 消息 + “,来自=” + 节点ID + ']');

    返回 真实的; //返回true继续聆听。
});

//向远程节点发送已排序的消息。
对于 (整数  = 0;  < 10; ++)
    rmt消息.发送已订购(“MyOrderedTopic” 整数.toString(字符串)(),0);