论坛首页 Java企业应用论坛

关于Flex消息推送

浏览 14443 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-06-05  
java代码如下

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推过来的消息啊,配置文件都是没问题的。
   发表时间:2012-06-06  
我正好在学flex+java 写了这么个demo,反推的话 你的方法会不停的调用提交数据到前台的。并且msgBroker.routeMessageToService这个方法会不停调用。   而flex的页面可以接收到后台来的数据。
0 请登录后投票
   发表时间:2012-06-06  
关键就是现在 没推上来数据,后台是有数据,也设置了。
0 请登录后投票
   发表时间:2012-06-06  
你的这个sendMessage要循环调用,你不能只调用一次。
0 请登录后投票
   发表时间:2012-06-06  
这个好像跟循环不循环无关吧,我只是Flex收不到数据而已
0 请登录后投票
   发表时间: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定时调用。前台跟你写的不一样,公司没有源码
0 请登录后投票
   发表时间:2012-06-06  
我是写了一个定时器,定时从后台向前台发送数据的,按照网上写的弄很简单的。效果也出来了!
0 请登录后投票
   发表时间:2012-06-06  
这个貌似不好搞啊
0 请登录后投票
   发表时间:2012-06-06  
这个很容易啊。http://www.ityangba.com/thread-38-1-1.html 我就是照这个做的demo。
0 请登录后投票
   发表时间:2012-06-06  
这个帖子我看过的,首先多谢你了,但是我要是这样调用呢,这个例子就没法搞了

new MessageBrokFactory().sendMessage("","hello"); 

这个hello可以是提示信息,比如告警信息,等
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics