第一版实现:
实现了Zbus的JFinal插件,JFinal里用Zbus更方便了。
第二版主要实现了以下目标:
1)简化设计,去掉了异步发送,仅支持同步发送。
2)信息发送/接收实现了泛型支持。
3)可直接发送/接收JFinal中特有的Model对象和Record对象。
导入dist目录下的jfinal-zbus-2.0.0.jar
同时还需要导入zbus,znet,fastjson,jfinal等jar包
配置代码如下:
//初始化zbus插件
ZbusPlugin zp = new ZbusPlugin();
//创建一个MQ
zp.createMq("MyMQ");
//创建一个Topic(zbus中topic必须属于某个队列,所以第一个参数是mq名,第二个参数是topic名)
zp.createTopic("Topic", "Check");
//注册MQ的消息到达(收到消息)回调泛型(Dict类型,Dict继承子Model)接口。
zp.registerMqMessageCallback("MyMQ", new TMessageCallback<Dict>(){
@Override
public void onMessage(Dict msg) {
LOG.info("receive from MyMQ: key=" + msg.getStr("key") + ",value=" + msg.getStr("value"));
}
});
//注册Topic的消息到达(收到消息)回调泛型(String类型)接口。
zp.registerTopicMessageCallback("Topic", "Check", new TMessageCallback<String>(){
@Override
public void onMessage(String msg) {
LOG.info("receive from Topic.Check: msg=" + msg);
}
});
//添加插件
me.add(zp);
发送代码如下:
//初始化一个MQ泛型(Dict类型,Dict继承子Model)发送器,构造函数参数为MQ名
Sender<Dict> mqSender = new MqSender<Dict>("MyMQ");
Dict dict = new Dict();
dict.setId(1L);
dict.set("key", "key"+1);
dict.set("value", "value"+1);
//发送对象到MQ
mqSender.send(dict);
//初始化一个Topic泛型(String类型)发送器,构造函数参数为,MQ名,Topic名
Sender<String> topicSender = new TopicSender<String>("Topic", "Check");
//发送对象到topic
topicSender.send("这时一个订阅消息");
使用时,可在需要发送的类里定义一个特定类型的发送器。建议发送器的类型不要太复杂。只通过zbus来发送简单的消息。
git@osc地址如下
https://git.oschina.net/myaniu/jfinal-zbus