实现了Zbus的JFinal插件,JFinal里用Zbus更方便了。

第二版已经发布,支持泛型,代码更安全,更简单:

http://my.oschina.net/myaniu/blog/486717

zbus
https://git.oschina.net/rushmore/zbus
轻量级服务总线/消息队列
1)多种消息模式--支持生产者/消费者,发布订阅,RPC
2)丰富的API--C/C++/C#/JAVA/Python/Node.JS跨平台、多语言支持
3)开放协议标准--原生兼容HTTP协议(长连接),头部动态扩展
4)支持TrackServer与ZbusServer高可用横向动态扩容机制

jfinal
https://git.oschina.net/jfinal/jfinal
JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率!为您节约更多时间,去陪恋人、家人和朋友 :)

因项目中用的jfinal和zbus,于是做了一个插件。方便使用。
插件git@osc地址如下:
https://git.oschina.net/myaniu/jfinal-zbus

使用说明如下:
1)导入dist目录下的jfinal-zbus-1.2.0.jar
2)在jfinal核心配置文件中的configPlugin函数中添加如下代码

//zbus插件
        /*
        SingleBrokerConfig singleBrokerConfig = new SingleBrokerConfig();
        singleBrokerConfig.setBrokerAddress("127.0.0.1:15555");
        ZbusPlugin zp = new ZbusPlugin(singleBrokerConfig);
	    
	    HaBrokerConfig haBrokerConfig = new HaBrokerConfig();
	    haBrokerConfig.setTrackAddrList("127.0.0.1:16666;127.0.0.1:16667");
	    ZbusPlugin zp = new ZbusPlugin(haBrokerConfig);
	    */
	    ZbusPlugin zp = new ZbusPlugin("127.0.0.1:15555");
        zp.registMqProducer("MyMQ");
        //mq,topic,mqTopic(别名,方便发送时使用)
        zp.registPubSubProducer("TopicMq", "Check","CheckTopic");
        zp.registMqConsumer("MyMQ", new MessageCallback(){
			@Override
			public void onMessage(Message msg, Session session) throws IOException {
				LOG.info("mq=" + msg.getMq() + ",body="+ msg.getBodyString());
			}
        });
        //mq,topic,MessageCallback
        zp.registPubSubConsumer("TopicMq", "Check", new MessageCallback(){
			@Override
			public void onMessage(Message msg, Session session) throws IOException {
				LOG.info("mq=" + msg.getMq() + ",body="+ msg.getBodyString());
			}
        });
        me.add(zp);



 在需要发送消息的地方:
Message msg = new Message();
        msg.setBody("这时一条测试MQ的同步消息");
        Zbus.syncSendToMq("MyMQ", msg, 1000);
        //Zbus.asyncSendToMq(mq, msg, callback);
        msg = new Message();
        msg.setBody("这时一条测试Topic的异步消息");
        //Zbus.syncSendToTopic(mqTopic, msg, timeout);
        Zbus.asyncSendToTopic("CheckTopic", msg, new ResultCallback(){
			@Override
			public void onCompleted(Message msg) {
				LOG.info(msg.getMsgId());
			}
        });



具体应用中可以用JSON序列化对象存入Message的body中,收到后再反序列化。

建议所有MQ名/topic名在统一的文件中定义,不要在代码中直接写字符串。

你可能感兴趣的:(jFinal,zbus)