<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
creationComplete="onCreationComplete(event)" viewSourceURL="srcview/index.html">
<mx:Script>
<![CDATA[
import flash.net.registerClassAlias;
import mx.rpc.remoting.mxml.RemoteObject;
import weborb.messaging.WeborbProducer;
import mx.messaging.messages.AsyncMessage;
import mx.messaging.ChannelSet;
import weborb.messaging.WeborbMessagingChannel;
import weborb.messaging.WeborbConsumer;
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.messaging.events.MessageFaultEvent;
import mx.messaging.events.MessageAckEvent;
import mx.messaging.events.MessageEvent;
import mx.messaging.events.ChannelFaultEvent;
import mx.events.FlexEvent;
public var producer:WeborbProducer;
public var consumer:WeborbConsumer;
public function onCreationComplete(event:FlexEvent):void {
registerClassAlias("Messaging.Car", Car);
pingWeborb();
}
private function pingWeborb():void {
var ro:RemoteObject = new RemoteObject("GenericDestination");
ro.source = "Weborb.Management.ManagementService";
ro.endpoint = "http://{server.name}/indiegroup-edumatic3-prod/weborb.aspx";
ro.ping.addEventListener(ResultEvent.RESULT, onPingResult);
ro.ping.addEventListener(FaultEvent.FAULT, onPingFault);
ro.ping();
}
private function connectAsProducer(subTopic:String):void{
var cs:ChannelSet = new ChannelSet();
var uri:String = "rtmp://{server.name}:2037/MessagingService";
var channel:WeborbMessagingChannel = new WeborbMessagingChannel(subTopic, uri);
cs.addChannel(channel);
producer = new WeborbProducer();
producer.channelSet = cs;
producer.destination = "ExampleDestination";
producer.subqueue = subTopic;
producer.addEventListener(MessageAckEvent.ACKNOWLEDGE, onMessageAck);
producer.addEventListener(MessageFaultEvent.FAULT, onMessageFault);
var car:Car = new Car();
car.Make = "Zakke";
car.Mileage = 10;
car.Model = "Makke";
producer.send(new AsyncMessage(car));
}
private function connectAsConsumer(subTopic:String):void{
var cs:ChannelSet = new ChannelSet();
var uri:String = "rtmp://{server.name}:2037/MessagingService";
var channel:WeborbMessagingChannel = new WeborbMessagingChannel(subTopic, uri);
channel.addEventListener(MessageEvent.MESSAGE, onMessage);
cs.addChannel(channel);
consumer = new WeborbConsumer();
consumer.channelSet = cs;
consumer.destination = "ExampleDestination";
consumer.subqueue = subTopic;
consumer.addEventListener(MessageAckEvent.ACKNOWLEDGE, onMessageAck);
consumer.addEventListener(MessageFaultEvent.FAULT, onMessageFault);
consumer.subscribe();
}
private function onChannelFault(event:ChannelFaultEvent):void {
}
private function onMessage(event:MessageEvent):void {
trace(event.message.body);
}
private function onMessageAck(event:MessageAckEvent):void {
}
private function onMessageFault(event:MessageFaultEvent):void {
}
private function onPingResult(result:ResultEvent):void {
connectAsConsumer("johleromessagingqueue");
connectAsProducer("johleromessagingqueue");
}
private function onPingFault(fault:FaultEvent):void {
Alert.show( "Server reported an error - " + fault.fault.faultDetail);
}
]]>
</mx:Script>
</mx:Application>