锁定老帖子 主题:关于Flex消息推送
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-06-05
public void sendMessage(String sub, Object message) { try { msgBroker = MessageBroker.getMessageBroker("_messageBroker"); AsyncMessage msg = new AsyncMessage(); msg.setDestination("serverpush"); msg.setClientId(clientId); msg.setMessageId(UUIDUtils.createUUID()); msg.setTimestamp(System.currentTimeMillis()); /* 设置消息信息,发布到客户端去 */ msg.setBody(message); msgBroker.routeMessageToService(msg, null); } catch (Exception e) { e.printStackTrace(); } } /* * 启动activeMq采集 */ public void start() { try { // 初始化flex消息组建 clientId = UUIDUtils.createUUID(); // 启动mq消息接收 amqAdapter = new ActiveMQAdapter(); System.out.println("amqAdapter:" + amqAdapter); amqAdapter.setUrl("tcp://" + hostname + ":" + port); amqAdapter.addMessageListener(queuename,pattern,new ReceiveWorkSheetServiceBean()); } catch (JMSException e) { String msg = "Cannot start AlarmCollectQueue."; logger.error(msg, e); System.out.println("set config ex" + e); e.printStackTrace(); } catch (NamingException e) { String msg = "Naming context error."; logger.error(msg, e); System.out.println("set config ex" + e); e.printStackTrace(); } } Flex代码如下 private function init():void{ serverRO.controlThread("start"); } <mx:Consumer id="consumer" destination="serverpush" message="messageHandler(event)"/> <mx:RemoteObject id="serverRO" destination="serverpushserver" result="remoteServerCallback(event)"/> private function messageHandler(event:MessageEvent):void{ mx.controls.Alert.show("test"); } 在java中是这么调用的 new MessageBrokFactory().sendMessage("","hello"); Flex接收不到java推过来的消息啊,配置文件都是没问题的。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-06-06
我正好在学flex+java 写了这么个demo,反推的话 你的方法会不停的调用提交数据到前台的。并且msgBroker.routeMessageToService这个方法会不停调用。 而flex的页面可以接收到后台来的数据。
|
|
返回顶楼 | |
发表时间:2012-06-06
关键就是现在 没推上来数据,后台是有数据,也设置了。
|
|
返回顶楼 | |
发表时间:2012-06-06
你的这个sendMessage要循环调用,你不能只调用一次。
|
|
返回顶楼 | |
发表时间:2012-06-06
这个好像跟循环不循环无关吧,我只是Flex收不到数据而已
|
|
返回顶楼 | |
发表时间:2012-06-06
class Timertask extends TimerTask
{ Timertask() { msgBroker = MessageBroker.getMessageBroker(null); clientID = UUIDUtils.createUUID(); } public void run() { Tick tick = DataPool.get();//消息对象 tick.setSeqNo(String.valueOf(i)); AsyncMessage msg = new AsyncMessage(); msg.setDestination("tick-data-feed"); msg.setHeader("DSSubtopic", "tick"); msg.setClientId(clientID); msg.setMessageId(UUIDUtils.createUUID()); msg.setTimestamp(System.currentTimeMillis()); msg.setBody(tick); if(msgBroker == null) msgBroker = MessageBroker.getMessageBroker(null); if(msgBroker != null) msgBroker.routeMessageToService(msg, null); i++; } static int i = 0; MessageBroker msgBroker; String clientID; } 这是我按照网上找的写的java后台调用的代码,可以执行。我是通过一个TimerTask定时调用。前台跟你写的不一样,公司没有源码 |
|
返回顶楼 | |
发表时间:2012-06-06
我是写了一个定时器,定时从后台向前台发送数据的,按照网上写的弄很简单的。效果也出来了!
|
|
返回顶楼 | |
发表时间:2012-06-06
这个貌似不好搞啊
|
|
返回顶楼 | |
发表时间:2012-06-06
这个很容易啊。http://www.ityangba.com/thread-38-1-1.html 我就是照这个做的demo。
|
|
返回顶楼 | |
发表时间:2012-06-06
这个帖子我看过的,首先多谢你了,但是我要是这样调用呢,这个例子就没法搞了
new MessageBrokFactory().sendMessage("","hello"); 这个hello可以是提示信息,比如告警信息,等 |
|
返回顶楼 | |