FolkMQ v1.7.8

广播模式之订阅模拟

“广播消息”是由生产者发起实现的“广播模式”,这种方案成本比较低,由生产者灵活控制,但可靠性较差。还有种方案是:可以由消费者 “模拟” 实现。即,让一个消费者组里,只有一个消费者。

1、了解集群模式

当服务启动多个实例时,下面代码的 "demoapp" 就会有多个消费者(也即连接会话)。服务端在派发时,通过负载均衡给其中一个消费者派发。

MqClient client = FolkMQ.createClient("folkmq://127.0.0.1:18602")
                        .nameAs("demoapp") //申明应用名
                        .connect();

//订阅
// 主题为: "user.created" 
// 消息者组:默认为应用名
client.subscribe("user.created", message -> {
    System.out.println(message);
});

图例效果:

2、(通过,订阅模拟出)广播模式

“订阅模拟”,是指“集群模式”的规则不变,只是让消费者组里,只有一个消费者。相对于“广播消息”,这个方案有完整的ACK保障,但资源更费,会新增很多消费者组(即队列)。

MqClient client = FolkMQ.createClient("folkmq://127.0.0.1:18602")
                        .nameAs("demoapp") //申明应用名
                        .connect();

//订阅主题
// 主题为:"config.updated"
// 消费者组:"deomapp-{ip:port}" (使用应用名 + 本地 ip:port,以保确它的唯一性)
client.subscribe("config.updated", "deomapp-{ip:port}", message -> {
    System.out.println(message);
});